我在 jquery 中有一个 json 对象数组。我想复制一个对象,然后根据 if 条件替换原始对象中的键值。但每次我替换单个对象中的值时,它都会替换两个对象中的值。我只想更换一个,即原来的 我使用过break和return false语句但不起作用。
var index=getIndex(class_id,teacher_id);
finalJson[index]['teacher_name']='asad';
function getIndex(class_id,teacher_id){
for(var it in finalJson){
if(finalJson[it]['class'] == class_id && finalJson[it]['type'] == 'c'){
finalJson.push(finalJson[it])
return it;
}
}
}
请任何人帮忙这里是 if 条件。 提前致谢。
最佳答案
当您执行finalJson.push(finalJson[it])
时,您将再次将旧对象的引用推送到数组中。因此,对一个引用所做的任何操作都将在新引用所指向的对象上执行。这就是为什么您需要使用旧对象的属性(使用 Object.create
)创建一个新对象,然后推送它。
替换
finalJson.push(finalJson[it])
with(不要使用此选项)
finalJson.push(Object.create(finalJson[it]))
或较慢但深度复制的选项
finalJson.push(JSON.parse(JSON.stringify(finalJson[it])));
关于javascript - 复制对象,然后更新 JSON 对象中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986489/