我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
我一直在网上阅读,一些地方说这是不可能的,一些地方说这是可能的,然后给出一个例子,另一些地方反驳这个例子,等等。
如何在JavaScript中声明一个2维数组?(假设这是可能的) 我如何访问它的成员?(myArray[0][1] or myArray[0,1]?)
当前回答
在一些注释中提到了这一点,但是使用array .fill()将有助于构造一个2-d数组:
function create2dArr(x,y) {
var arr = [];
for(var i = 0; i < y; i++) {
arr.push(Array(x).fill(0));
}
return arr;
}
这将在返回的数组中生成一个长度为x, y的数组。
其他回答
如果你想要的是一个4x4矩阵,看看DOMMatrix,它很容易使用,我可以说,
let m = new DOMMatrix();
// m.m11, m.m12, m.m13, m.m14, ..., m.m41, m.m42, m.m43, m.m44
最初由于不同的原因,它在node.js上不可用,并且仅限于4x4。
你也可以考虑使用一个自动激活对象,而不是JS的数组,看看我的答案,但这里也带来了更多的说服力:
var tree = () => new Proxy({}, { get: (target, name) => name in target ? target[name] : target[name] = tree() });
var t = tree();
t[0][2][3] = 4;
console.log(t[0][2][3]);
它使用新的JS和行为不正确时,你迭代它,所以要小心它。
如果你需要一个灵活的多维数组生成器,也可以看看这个。
如果你是在谷歌图表的2D数组,最好的方法是
var finalData = [];
[["key",value], ["2013-8-5", 13.5], ["2013-7-29",19.7]...]
指的是 不是一个有效的2d数组谷歌图表
两行:
var a = [];
while(a.push([]) < 10);
它将生成一个长度为10的数组a,其中充满数组。 (Push将一个元素添加到数组中并返回新的长度)
类似于activa的答案,这里有一个创建n维数组的函数:
function createArray(length) {
var arr = new Array(length || 0),
i = length;
if (arguments.length > 1) {
var args = Array.prototype.slice.call(arguments, 1);
while(i--) arr[length-1 - i] = createArray.apply(this, args);
}
return arr;
}
createArray(); // [] or new Array()
createArray(2); // new Array(2)
createArray(3, 2); // [new Array(2),
// new Array(2),
// new Array(2)]
最简单的方法:
var myArray = [[]];