javascript - 添加到数组时新对象会被覆盖

标签 javascript arrays object

这里是新手...请保持友善。

我有一个空对象,它将被插入数组中。

listView = {};

我向它添加属性。

listView.code = code;
listView.description = description;

我将结果对象插入数组中。

listy.push(listView);

每次我在步骤 #2 中输入新的选择时,它都会覆盖该对象,而不是将新的对象属性添加到数组中。它还将索引增加一,所以它只是重复...

[{"code":"I77.812","description":"Thoracoabdominal Aortic Ectasia"}]
[{"code":"I77.811","description":"Abdominal Aortic Ectasia"},{"code":"I77.811","description":"Abdominal Aortic Ectasia"}]
[{"code":"I06.1","description":"Rheumatic aortic insufficiency"},{"code":"I06.1","description":"Rheumatic aortic insufficiency"},{"code":"I06.1","description":"Rheumatic aortic insufficiency"}]

该数组应包含三个不同的对象。但它却拥有新添加的三个副本...

我应该如何添加新的选择对象以免它们被覆盖?

最佳答案

您总是添加对同一对象的引用,并更改该同一对象,而不是添加新对象。看这个:

var a = [];
var o = {};
for (var i = 0; i < 5; i++) {
  o.id = i;
  a.push(o);
}
a
// => [{"id":4},{"id":4},{"id":4},{"id":4},{"id":4}]

但是

var a = [];
for (var i = 0; i < 5; i++) {
  var o = {};
  o.id = i;
  a.push(o);
}
a
// => [{"id":0},{"id":1},{"id":2},{"id":3},{"id":4}]

不同之处在于,第二个代码总是创建一个与数组中已有的所有其他对象不同的新对象。

打个比方,想象一下一位戏剧导演在选 Angular 。他转向一名 Actor ,说“你……你将成为罗密欧。”。然后他看着同一个 Actor ,说道“你......你将成为茂丘西奥。在这里,茂丘西奥,拿着这把剑。罗密欧......谁告诉你要拿一把剑?!?”完全没有意识到,如果罗密欧和茂丘西奥是同一个人,如果其中一个拿起剑,另一个也会这么做。

关于javascript - 添加到数组时新对象会被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32264649/

相关文章:

javascript - Chrome 调试协议(protocol) : HeapProfiler. getHeapSnapshot 忽略回调

c - 使用二维数组和循环的 c++ 中未显示的百分比

c++ - 初始化堆分配对象时出错

python - 如何知道数组和字典等python对象的字节大小? - 简单的方法

JavaScript 大数库?

javascript - react 将 Prop 从子级传递给父级未定义

c++ - malloc 结构体中的一维数组

javascript - 使用 SetInterval() 调用 Javascript 对象方法

javascript - 媒体源 api 源缓冲区追加不起作用

Java练习——用二维数组显示表格