我希望创建一个数组并用空对象填充它。
但是,我使用的方法不起作用。据我了解,问题在于在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
答案 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; }