我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
当前回答
这是我发现的一个制作二维数组的快速方法。
function createArray(x, y) {
return Array.apply(null, Array(x)).map(e => Array(y));
}
您还可以轻松地将该函数转换为ES5函数。
function createArray(x, y) {
return Array.apply(null, Array(x)).map(function(e) {
return Array(y);
});
}
为什么这样工作:新的Array(n)构造函数创建了一个带有Array原型的对象。原型,然后分配对象的长度,导致一个未填充的数组。由于它缺乏实际成员,我们不能在它上运行Array.prototype.map函数。
然而,当您向构造函数提供多个参数时,例如执行Array(1,2,3,4)时,构造函数将使用arguments对象正确地实例化和填充Array对象。
因此,我们可以使用Array。apply(null, Array(x)),因为apply函数会将参数分散到构造函数中。为了澄清,执行Array。apply(null, Array(3))等价于执行Array(null, null, null)。
现在我们已经创建了一个实际的填充数组,我们所需要做的就是调用map并创建第二层(y)。
其他回答
使用数组推导式
在JavaScript 1.7及更高版本中,您可以使用数组推导式来创建二维数组。您还可以在填充数组时过滤和/或操作条目,而不必使用循环。
var rows = [1, 2, 3];
var cols = ["a", "b", "c", "d"];
var grid = [ for (r of rows) [ for (c of cols) r+c ] ];
/*
grid = [
["1a","1b","1c","1d"],
["2a","2b","2c","2d"],
["3a","3b","3c","3d"]
]
*/
您可以创建任何n x m的数组,并通过调用填充默认值
var default = 0; // your 2d array will be filled with this value
var n_dim = 2;
var m_dim = 7;
var arr = [ for (n of Array(n_dim)) [ for (m of Array(m_dim) default ]]
/*
arr = [
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
]
*/
更多示例和文档可以在这里找到。
请注意,这还不是一个标准功能。
这就是我的成就:
var appVar = [[]]; appVar[0][4] = "bineesh"; appVar[0][5] = "kumar"; console.log(appVar[0][4] + appVar[0][5]); console.log (appVar);
这把我拼成了bineeshkumar
我不确定是否有人回答过这个问题,但我发现这对我很有效
var array = [[,],[,]]
eg:
var a = [[1,2],[3,4]]
例如,对于一个二维数组。
只需将数组中的每个项设置为数组。
var x = new Array(10); For (var I = 0;I < x.length;我+ +){ x[i] = new Array(3); } console.log (x);
一个简单的例子:
var blocks = [];
blocks[0] = [];
blocks[0][0] = 7;