【发布时间】:2011-06-27 15:26:15
【问题描述】:
是否有更短、更好的方法来生成“n”长度的二维数组?
var a = (function(){ var i=9, arr=[]; while(i--) arr.push([]); return arr })();
a // [ [],[],[],[],[],[],[],[],[] ]
** 老式的捷径**:
var a = (function(a){ while(a.push([]) < 9); return a})([]);
更新 - 使用 ES2015
Array(5).fill().map(a=>[]); // will create 5 Arrays in an Array
// or
Array.from({length:5}, a=>[])
清空二维数组(更节省内存)
function make2dArray(len){
var a = [];
while(a.push([]) < len);
return a;
}
function empty2dArray(arr){
for( var i = arr.length; i--; )
arr[i].length = 0;
}
// lets make a 2D array of 3 items
var a = make2dArray(3);
// lets populate it a bit
a[2].push('demo');
console.log(a); // [[],[],["demo"]]
// clear the array
empty2dArray(a);
console.log(a); // [[],[],[]]
【问题讨论】:
-
只有当你把它放在一个函数中:
var a = make2D(9);;) -
我将它用于网络工作者,每次初始化时都需要一个 2D 空数组
-
我想知道是否有一些花哨的 EC5 用于此
-
顺便说一句。较短不一定更好(只是想指出标题和问题主体的差异;))。
-
您可以通过将数组作为参数而不是声明它来使其更短:
var a = (function(a){ while(a.push([]) < 9); return a})([]);
标签: javascript arrays