问题,_.fill(Array(4), [])
是否等于[[], [], [], []]
?
因为_.isEqual(_.fill(Array(4), []), [[], [], [], []])
是true
var test = [[], [], [], []];
test[0].push(1);
console.log(test[0]);
test[1].push(2);
console.log(test[1]);
test[2].push(3);
console.log(test[2]);
test[3].push(4);
console.log(test[3]);
返回
[1]
[2]
[3]
[4]
这是我想要的,但是
var test = _.fill(Array(4), []);
test[0].push(1);
console.log(test[0]);
test[1].push(2);
console.log(test[1]);
test[2].push(3);
console.log(test[2]);
test[3].push(4);
console.log(test[3]);
返回
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
我做错了吗?我想创建并填充一组数组,其中4
中的_.fill(Array(4), [])
是动态的。
答案 0 :(得分:1)
[]
相当于JS中的new Array()
。
这意味着[[], [], [], []]
是一个包含4个新数组的数组,_.fill(Array(4), [])
是一个包含同一数组的四个副本的数组。
换句话说,_.fill
变体等同于:
var a = [];
var test = [a, a, a, a];
如果你想制作一个多维数组,你可以这样做:
_.map(Array(n), function () { return []; })
创建一个二维数组。