提问者:小点点

Array.fill(数组)按引用而不是按值[duplicate]创建副本


我正在尝试使用array.fill创建一个6乘12的矩阵

let m = Array(6).fill(Array(12).fill(0));

虽然这样可以工作,但问题是内部数组实际上都引用了相同的array对象。

let m = Array(6).fill(Array(12).fill(0));
m[0][0] = 1;
console.log(m[1][0]); // Outputs 1 instead of 0

我希望(并且期望)m[1][0]的值为0

如何强制array.fill填充给定参数的按值复制(例如:array(12).fill(0)是我的例子中的参数)而不是按引用复制?


共1个答案

匿名用户

您可以改用array.from():

感谢pranav C balan在评论中提出了进一步改进的建议。

null

let m = Array.from({length: 6}, e => Array(12).fill(0));

m[0][0] = 1;
console.log(m[0][0]); // Expecting 1
console.log(m[0][1]); // Expecting 0
console.log(m[1][0]); // Expecting 0