JavaScript 中的 Array.fill():引用与值的警示故事
Array.fill() 是一种使用的 JavaScript 方法用指定值填充数组。但是,重要的是要了解 Array.fill() 对引用而不是值进行操作。
问题:引用与值
考虑以下代码:
let m = Array(6).fill(Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
这里,我们使用 Array.fill() 创建一个 6x12 矩阵。然而,当我们将 m0 设置为 1 时,m1 意外地也变为 1。这是因为 Array.fill() 创建的内部数组都引用同一个 Array 对象。
预期行为:值
我们可能不想引用,而是复制值。换句话说,更改 m0 不应影响 m1。
解决方案:使用 Array.from()
强制 Array.fill() 复制值而不是引用,我们可以使用 Array.from() 如下:
let m = Array.from({length: 6}, e => Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 0 as expected
Array.from() 确保每个内部数组都是不同的
结论
使用 Array.fill() 时,请注意引用和值之间的区别。对于您想要复制值而不是引用的情况,请考虑使用 Array.from() 代替。
以上是为什么 JavaScript 的 `Array.fill()` 创建引用而不是副本,我该如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!