小编典典

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

javascript

只是一个小问题。

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

var arr = new Array(x).fill(y);

如果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;

有什么方法可以说明在使用填充功能时应为每个元素创建一个新对象吗?还是应该将其转换为循环?

提前致谢!


阅读 290

收藏
2020-04-25

共1个答案

小编典典

您可以首先fill使用任何值(例如undefined)的数组,然后就可以使用map

var arr = new Array(2).fill().map(u => ({}));



var arr = new Array(2).fill().map(Object);
2020-04-25