我在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])));

09-18 03:40