相关疑难解决方法(0)

带对象的Array.prototype.fill()传递引用而不是新实例

只是一个小问题.

我正在玩弄一点,并试图实例化一个新的长度x数组,其中该数组的所有元素初始化为值y

var arr = new Array(x).fill(y);
Run Code Online (Sandbox Code Playgroud)

如果y的值不是对象,则此方法很有效.意思是y是一个对象,以下是正确的:

var arr = new Array(2).fill({});
arr[0] === arr[1]; //is true;
arr[0].test = 'string';
arr[1].test === 'string'; //is also true;
Run Code Online (Sandbox Code Playgroud)

有没有办法说明在使用fill-function时应该为每个元素创建一个新对象?或者我应该将其转换为循环?

提前致谢!

javascript arrays

41
推荐指数
4
解决办法
8668
查看次数

Array.fill(Array)通过引用而不是值来创建副本

我正在尝试创建一个6乘12矩阵 Array.fill

let m = Array(6).fill(Array(12).fill(0));
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但问题是内部数组实际上都引用了同一个Array对象.

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

我想(和预期)的值m[1][0]0.

如何强制Array.fill填充给定参数的值复制(例如:Array(12).fill(0)在我的情况下是参数)而不是通过引用复制?

javascript reference ecmascript-6

14
推荐指数
2
解决办法
2495
查看次数

标签 统计

javascript ×2

arrays ×1

ecmascript-6 ×1

reference ×1