Blu*_*ire 2 javascript arrays multidimensional-array
我已经声明了一个二维数组,如下所示:
a = [[]]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用除0以外的第一个维度索引来提供第二个维度值时,它不起作用:
a[1][0] = "foo" //returns error
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来手动定义您需要作为数组的每个索引,即:
a[1] = [];
a[2] = [];
a[3] = [];
//et cetera
Run Code Online (Sandbox Code Playgroud)
javascript中不存在N维数组 - 您只需将包含数组的数组作为元素.
您收到错误是因为a = [[]];声明了一个包含一个元素的数组,该数组恰好也是一个数组.因此a[0]是内部数组,但a[1]由于您从未声明它,因此不存在.正确声明"二维数组"的最简单方法是使用循环:
var outerArray = [];
var numInternalArrays = 5;
for (var i = 0; i < numInternalArrays; i++) {
outerArray[i] = [];
}
Run Code Online (Sandbox Code Playgroud)
如果您知道根数组应该有多少元素,您可以执行以下操作:
var arr =
(Math.pow(2,10)-1).toString(2) // Binary string of 1s. Its length being 10
.split('') // Create an array from this string
.map(function(){return [];}); // Map a new empty array to each index
console.log(arr); // [[],[],[],[],[],[],[],[],[],[]]
Run Code Online (Sandbox Code Playgroud)
这完成了同样的事情:
for(var arr = [], i=10; i--; arr[i]=[]);
Run Code Online (Sandbox Code Playgroud)
不需要arr在for循环之外声明,因为javascript没有块作用域,它将被添加到执行它的作用域中.