javascript - 用空对象填充数组
问题描述
我希望创建一个数组并用空对象填充它。
但是,我使用的方法不起作用。我的理解是,在 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
解决方案
你用一个常数值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; }
推荐阅读
- c++ - D2D1Factory::CreateDxgiSurfaceRenderTarget() 的正确参数是什么
- c# - C# 中是否有一种在测试过程中包含文件的好方法?
- python - 如何让抽象数据类传递 mypy?
- c# - C#: int[] 可以为空而不这样声明?
- c++ - 使用 SetWinEventHook() 时如何定义消息循环?
- reactjs - Safari 14.1.2 版浏览器不显示语言选择
- java - Java - 如何在一种方法、另一种甚至多种其他方法中使用数组?
- visual-studio-code - Visual Studio Code - 缩进/代码布局
- javascript - Axios 被 CORS 阻止但 HTMLParser 不是?(网络浏览器抓取工具)
- git - Quartus Prime 18.1 Lite (Verilog) 项目的 .gitignore 中应该有哪些文件或文件夹?