如何使用具有相同对象但每个索引具有不同副本的Array.fill()?

时间:2018-05-31 17:17:26

标签: javascript arrays reference

我正在创建一个数组并使用fill方法填充它,但更改array1[0].foo会更改数组中的所有对象。

const array1 = Array(2).fill({ foo: null })
array1[0].foo = 'bar' // [ { foo: 'bar' }, { foo: 'bar' } ]

对于每个索引,是否有办法将fill与同一对象的不同副本一起使用?

1 个答案:

答案 0 :(得分:1)

它不适用于Array#fill,因为它使用常量值。

您可以使用Array.from并映射对象。

const array = Array.from({ length: 2 }, _ => ({ foo: null }));

array[0].foo = 'bar';

console.log(array);