gpt4 book ai didi

Javascript:在循环中,修改对象的属性然后推送到数组

转载 作者:行者123 更新时间:2023-11-28 11:15:33 25 4
gpt4 key购买 nike

我有以下代码(可以正常工作):

var arr = [];
for(var i = 0; i < 2; i++) {
var obj = { a: 'A'};
obj.c = 'C' + i;
arr.push(obj);
}

// now arr is:
// [ {a: 'A', 'c': 'C0'}, {a: 'A', 'c': 'C1'} ]

为了提高代码的性能,我将 obj 放置在循环之外,然后仅添加/修改新属性,如下所示:

var arr = [];
var obj = { a: 'A'};
for(var i = 0; i < 2; i++) {
obj.c = 'C' + i;
arr.push(obj);
}

// now arr is:
// [ {a: 'A', 'c': 'C1'}, {a: 'A', 'c': 'C1'} ]

为什么两个对象都得到了 C1 ?请解释我做错了什么,以及如何将对象置于循环之外并获得正确的结果?

注意:我知道这是一个简单的问题,性能不是问题,但实际上我正在处理现实中性能很重要的大量对象。

最佳答案

您正在将对象(不是对象的副本)推送到数组,然后更改它。

如果您希望每个索引中都有不同的对象,那么您需要在每次循环时创建一个新对象。

关于Javascript:在循环中,修改对象的属性然后推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40868613/

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