我在jquery中有一个json对象数组。我想复制一个对象,然后根据if条件替换原始对象中的键值。但是每当我替换单个对象中的值时,它就会替换两个对象中的值。我只想替换一个即原始
我使用过break和return虚假陈述,但是没有用。
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;
}
}
}
如果条件不好,请任何人帮助。
提前致谢。
最佳答案
当您执行finalJson.push(finalJson[it])
时,您将在数组中再次推送对旧对象的引用。因此,对一个引用进行的任何操作都将在新引用所指向的对象上执行。这就是为什么您需要使用旧对象的属性(使用Object.create
)创建一个新对象然后进行推送的原因。
更换
finalJson.push(finalJson[it])
与(不要使用此选项)
finalJson.push(Object.create(finalJson [it]))
或较慢但深度复制的选项
finalJson.push(JSON.parse(JSON.stringify(finalJson[it])));