用空对象填充数组

时间:2019-10-20 20:02:11

标签: javascript arrays object reference

我希望创建一个数组并用空对象填充它。

但是,我使用的方法不起作用。据我了解,问题在于在Javascript中,对象是通过引用传递的。这就是我正在尝试的。

let myArray = Array(10).fill({});

当我尝试设置数组中一个对象的值时,它会为所有对象的 all 设置值(因为我认为它们都指向内存中的同一位置) 。例如:

myArray[3]['text'] = 'Some text';

这将返回以下数组:

0: {text: "someText"}
1: {text: "someText"}
2: {text: "someText"}
3: {text: "someText"}
4: {text: "someText"}
5: {text: "someText"}
6: {text: "someText"}
7: {text: "someText"}
8: {text: "someText"}
9: {text: "someText"}

如何创建一个空数组并用唯一的对象填充它,以便我可以分别设置属性值? 我想要的输出是:

0: {}
1: {}
2: {text: "someText"}
3: {}
4: {}
5: {}
// And so on

1 个答案:

答案 0 :(得分:1)

您用Array#fill取一个恒定值进行填充。

相反,您需要将新对象映射到数组,并且可以使用Array.from和内置映射。

let myArray = Array.from({ length: 10 }, _ => ({}));

myArray[3]['text'] = 'Some text';

console.log(myArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }