gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:02:34 31 4
gpt4 key购买 nike

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

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

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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com