gpt4 book ai didi

javascript - 生成空二维数组的最佳方法

转载 作者:行者123 更新时间:2023-12-02 23:36:41 29 4
gpt4 key购买 nike

是否有更短、更好的方法来生成“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); // [[],[],[]]

最佳答案

另一种方式:

for(var a = [];a.length < 10; a.push([])); // semicolon is mandatory here

还有另一种方式:

var a = []; while(a.push([]) < 10);

这有效是因为 .push() [docs] ( specification ) 返回数组的新长度。

<小时/>

也就是说,这是“减少代码”的错误方式。创建一个具有有意义名称的专用函数并使用它。您的代码将更容易理解:

function get2DArray(size) {
size = size > 0 ? size : 0;
var arr = [];

while(size--) {
arr.push([]);
}

return arr;
}

var a = get2DArray(9);

代码的读取次数远多于编写次数。

关于javascript - 生成空二维数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495187/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com