首页 > 解决方案 > 用空对象填充数组

问题描述

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

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

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

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

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

标签: javascriptarraysobjectreference

解决方案


你用一个常数值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; }


推荐阅读