gpt4 book ai didi

Javascript 数组项被覆盖

转载 作者:行者123 更新时间:2023-12-02 14:40:30 25 4
gpt4 key购买 nike

我有以下代码。

代码迭代 jsonRow 对象的集合,将它们推送到 jsonRows 数组中,然后逐个属性重置 jsonRow 对象。

此重置会导致 jsonRows 数组中的 jsonRow 对象受到影响。此行为有任何线索吗?

for(iterating over collection of jsonRow objects){
if(0 < jsonRow.id.length && 0 < jsonRow.title.length){
jsonRows.push(jsonRow);

console.log('jsonRow in jsonRows is intact', jsonRows);

for(var prop in jsonRow){
jsonRow[prop] = '';
}
console.log('jsonRow properties in jsonRows are ""', jsonRows);
}
}

最佳答案

jsonRows 中的对象与您“重置”的对象是相同的。 JavaScript 通过 parameters by references 。如果您不希望更改反射(reflect)在您插入数组的对象中,则需要克隆这些对象。

例如:

for(iterating over collection of jsonRow objects){
if(0 < jsonRow.id.length && 0 < jsonRow.title.length){
jsonRows.push(Object.assign({}, jsonRow));

console.log('jsonRow in jsonRows is intact', jsonRows);

for(var prop in jsonRow){
jsonRow[prop] = '';
}
console.log('jsonRow properties in jsonRows are ""', jsonRows);
}
}

关于Javascript 数组项被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041574/

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