JavaScriptmultidimensional array
任何人都可以给我一个JavaScript的示例与多维input数组? 希望你能帮忙,因为我还是JavaScript的新手。
就像input2行2列一样,它的输出将是2行input和2列input。
喜欢这个:
[input][input] [input][input]
var numeric = [ ['input1','input2'], ['input3','input4'] ]; numeric[0][0] == 'input1'; numeric[0][1] == 'input2'; numeric[1][0] == 'input3'; numeric[1][1] == 'input4'; var obj = { 'row1' : { 'key1' : 'input1', 'key2' : 'inpu2' }, 'row2' : { 'key3' : 'input3', 'key4' : 'input4' } }; obj.row1.key1 == 'input1'; obj.row1.key2 == 'input2'; obj.row2.key1 == 'input3'; obj.row2.key2 == 'input4'; var mixed = { 'row1' : ['input1', 'inpu2'], 'row2' : ['input3', 'input4'] }; mixed.row1[0] == 'input1'; mixed.row1[1] == 'input2'; mixed.row2[0] == 'input3'; mixed.row2[1] == 'input4';
如果你想存储DOM元素:
var inputs = [ [ document.createElement('input'), document.createElement('input') ], [ document.createElement('input'), document.createElement('input') ] ]; inputs[0][0].id = 'input1'; inputs[0][1].id = 'input2'; inputs[1][0].id = 'input3'; inputs[1][1].id = 'input4';
不确定以上是多么有用,直到你附上的元素。 以下可能是更多你正在寻找:
<input text="text" id="input5"/> <input text="text" id="input6"/> <input text="text" id="input7"/> <input text="text" id="input8"/> var els = [ [ document.getElementById('input5'), document.getElementById('input6') ], [ document.getElementById('input7'), document.getElementById('input8') ] ]; els[0][0].id = 'input5'; els[0][1].id = 'input6'; els[1][0].id = 'input7'; els[1][1].id = 'input8';
或者,也许这个:
<input text="text" value="4" id="input5"/> <input text="text" value="4" id="input6"/> <br/> <input text="text" value="2" id="input7"/> <input text="text" value="4" id="input8"/> var els = [ [ document.getElementById('input5'), document.getElementById('input6') ], [ document.getElementById('input7'), document.getElementById('input8') ] ]; var result = []; for (var i = 0; i < els.length; i++) { result[result.length] = els[0][i].value - els[1][i].value; }
这使:
[2, 0]
在控制台中。 如果你想输出到文本,你可以result.join(' ');
,这会给你2 0
。
编辑
还有一个工作示范:
<input text="text" value="4" id="input5"/> <input text="text" value="4" id="input6"/> <br/> <input text="text" value="2" id="input7"/> <input text="text" value="4" id="input8"/> <br/> <input type="button" value="Add" onclick="add()"/> // This would just go in a script block in the head function add() { var els = [ [ document.getElementById('input5'), document.getElementById('input6') ], [ document.getElementById('input7'), document.getElementById('input8') ] ]; var result = []; for (var i = 0; i < els.length; i++) { result[result.length] = parseInt(els[0][i].value) - parseInt(els[1][i].value); } alert(result.join(' ')); }
引用从数据结构和algorithm与JavaScript
好的部分(O'Reilly,第64页)。 Crockford使用一个函数来扩展JavaScript数组对象,该函数设置行数和列数,并将每个值设置为传递给该函数的值。 这是他的定义:
Array.matrix = function(numrows, numcols, initial) { var arr = []; for (var i = 0; i < numrows; ++i) { var columns = []; for (var j = 0; j < numcols; ++j) { columns[j] = initial; } arr[i] = columns; } return arr; }
以下是testing定义的一些代码:
var nums = Array.matrix(5,5,0); print(nums[1][1]); // displays 0 var names = Array.matrix(3,3,""); names[1][2] = "Joe"; print(names[1][2]); // display "Joe"
我们还可以创build一个二维数组,并将其初始化为一行中的一组值:
var grades = [[89, 77, 78],[76, 82, 81],[91, 94, 89]]; print(grades[2][2]); // displays 89
宣布无价值分配。
2维…
var arrayName = new Array(new Array());
三维…
var arrayName = new Array(new Array(new Array()));
我知道这是古老的,但是呢…
4×4例子(actually 4x<anything>)
:
var matrix = [ [],[],[],[] ]
可以填写:
for (var i=0; i<4; i++) { for (var j=0; j<4; j++) { matrix[i][j] = i*j; } }
很简单
var states = [,]; states[0,0] = tName; states[0,1] = '1'; states[1,0] = tName; states[2,1] = '1';
。 。 。
states[n,0] = tName; states[n,1] = '1';
function Array2D(x, y) { var array2D = new Array(x); for(var i = 0; i < array2D.length; i++) { array2D[i] = new Array(y); } return array2D; } var myNewArray = Array2D(4, 9); myNewArray[3][5] = "booger";
var size = 0; var darray = new Array(); function createTable(){ darray[size] = new Array(); darray[size][0] = $("#chqdate").val(); darray[size][1]= $("#chqNo").val(); darray[size][2] = $("#chqNarration").val() ; darray[size][3]= $("#chqAmount").val(); darray[size][4]= $("#chqMode").val(); }
在你的函数之后增加大小var。
希望以下代码适合您的要求
var row= 20; var column= 10; var f = new Array(); for (i=0;i<row;i++) { f[i]=new Array(); for (j=0;j<column;j++) { f[i][j]=0; } }
你可以按照下面的代码创build数组:
var arraymultidimensional = [] arraymultidimensional = [[value1,value2],[value3,value4],[value5,value6]];
结果:
[v1] [v2]位置0
[v3] [v4]位置1
[v5] [v6]位置2
要添加到数组中,请使用下面的方法:
//vectorvalue format = "[value,value,...]" function addToArray(vectorvalue){ arraymultidimensional[arraymultidimensional.length] = vectorvalue; }
希望这可以帮助。 🙂
所以这是我的解决scheme。
一个3x3arrays的简单例子。 你可以继续把它连接起来
Array(3).fill().map(a => Array(3))
或者下面的函数会产生你喜欢的任何级别
f = arr => { let str = 'return ', l = arr.length; arr.forEach((v, i) => { str += i < l-1 ? `Array(${v}).fill().map(a => ` : `Array(${v}` + ')'.repeat(l); }); return Function(str)(); } f([4,5,6]) // Generates a 4x5x6 Array
http://www.binaryoverdose.com/2017/02/07/Generating-Multidimensional-Arrays-in-JavaScript/
我创build了一个npm模块来做到这一点,增加了一些灵活性:
// create a 3x3 array var twodimensional = new MultiDimensional([3, 3]) // create a 3x3x4 array var threedimensional = new MultiDimensional([3, 3, 4]) // create a 4x3x4x2 array var fourdimensional = new MultiDimensional([4, 3, 4, 2]) // etc...
您也可以用任何值初始化头寸:
// create a 3x4 array with all positions set to 0 var twodimensional = new MultiDimensional([3, 4], 0) // create a 3x3x4 array with all positions set to 'Default String' var threedimensionalAsStrings = new MultiDimensional([3, 3, 4], 'Default String')
或更先进的:
// create a 3x3x4 array with all positions set to a unique self-aware objects. var threedimensional = new MultiDimensional([3, 3, 4], function(position, multidimensional) { return { mydescription: 'I am a cell at position ' + position.join(), myposition: position, myparent: multidimensional } })
获取和设置值的位置:
// get value threedimensional.position([2, 2, 2]) // set value threedimensional.position([2, 2, 2], 'New Value')