如何创建多维数组

有人能给我一个带有多维输入数组的 JavaScript 示例吗?希望你能帮上忙,因为我对 JavaScript 还是个新手。

就像当你输入2行和2列时,它的输出将是2行和2列的输入。

像这样:

[input][input]
[input][input]
550143 次浏览
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' : 'input2'
},
'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';

Http://jsfiddle.net/z4un3/

如果您想存储 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';

Http://jsfiddle.net/z4un3/3/

或者,也许这样:

<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

Http://jsfiddle.net/z4un3/6/

剪辑

还有一个工作演示:

<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(' '));
}

Http://jsfiddle.net/z4un3/8/

声明时没有赋值。

二维世界。

var arrayName = new Array(new Array());

三维空间。

var arrayName = new Array(new Array(new Array()));
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();
}

在你的函数之后增加大小变量。

我知道这很古老,但是..。

4x4示例 (actually 4x<anything>):

var matrix = [ [],[],[],[] ]

可以用以下方式填写:

for (var i=0; i<4; i++) {
for (var j=0; j<4; j++) {
matrix[i][j] = i*j;
}
}
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 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;
}

希望这对你有帮助。 :)

希望下面的代码适合您的需求

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;
}
}

很简单

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';

引自 基于 JavaScript 的数据结构与算法

The Good Part (O’Reilly,p. 64)克罗克福德扩展了 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;
}

下面是一些测试定义的代码:

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"

我们还可以创建一个二维数组,并将其初始化为一行中的一组值:

var grades = [[89, 77, 78],[76, 82, 81],[91, 94, 89]];
print(grades[2][2]); // displays 89

我创建了一个 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')

所以我的解决办法是。

一个3x3数组的简单例子。您可以继续链接这个例子来深入研究

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/

我为此写了一条直线:

[1, 3, 1, 4, 1].reduceRight((x, y) => new Array(y).fill().map(() => JSON.parse(JSON.stringify(x))), 0);

我觉得不过,我可以花更多的时间,使一个 JSON.parse(JSON.stringify())免费版本,这是用于 克隆在这里。

顺便说一下,看看我的另一个答案。

我知道这是一个古老的问题,但这里有一些东西可以尝试: 创建多维数组,并将其放在 html 标记中。 这样你就可以精确地瞄准你的数组输入:

//Your Holding tag for your inputs!
<div id='input-container' class='funky'></div>


<script>
//With VAR: you can seperate each variable with a comma instead of:
//creating var at the beginning and a semicolon at the end.
//Creates a cleaner layout of your variables
var
arr=[['input1-1','input1-2'],['input2-1','input2-2']],
//globall calls these letters var so you dont have to recreate variable below
i,j
;


//Instead of the general 'i<array.length' you can go even further
//by creating array[i] in place of 'i<array.length'
for(i=0;arr[i];i++){
for(j=0;arr[i][j];j++){
document.getElementById('input-container').innerHTML+=
"<input class='inner-funky'>"+arr[i][j]+"</input>"
;
}}
</script>

它只是一个简单的方式来编写您的代码和更容易调用

创建未初始化的多维数组:

function MultiArray(a) {
if (a.length < 1) throw "Invalid array dimension";
if (a.length == 1) return Array(a[0]);
return [...Array(a[0])].map(() => MultiArray(a.slice(1)));
}

创建初始化的多维数组:

function MultiArrayInit(a, init) {
if (a.length < 1) throw "Invalid array dimension";
if (a.length == 1) return Array(a[0]).fill(init);
return [...Array(a[0])].map(() => MultiArrayInit(a.slice(1), init));
}

用法:

MultiArray([3,4,5]);  // -> Creates an array of [3][4][5] of empty cells


MultiArrayInit([3,4,5], 1);  // -> Creates an array of [3][4][5] of 1s

我想出来的

let rows = 5;
let cols = 4;
let defaultValue = 0;


Array(rows).fill([]).map((x) => x = Array(cols).fill(defaultValue));

导致

(5) [Array(4), Array(4), Array(4), Array(4), Array(4)]
0: (4) [0, 0, 0, 0]
1: (4) [0, 0, 0, 0]
2: (4) [0, 0, 0, 0]
3: (4) [0, 0, 0, 0]
4: (4) [0, 0, 0, 0]
length: 5