复制对象,然后更新JSON对象中的值

时间:2016-03-14 11:36:49

标签: javascript jquery json

我在jquery中有一个json对象数组。我想复制一个对象,然后在if条件的基础上替换原始对象中的键值。但每次我替换单个对象中的值,它就会替换两个对象中的值。我只想更换一个原件 我使用了break并返回了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;
        }
    }
}

请有人帮忙,如果有条件的话。 提前致谢。

2 个答案:

答案 0 :(得分:4)

执行finalJson.push(finalJson[it])时,您将再次在数组中推送对旧对象的引用。因此,对一个引用执行的任何操作都将在新引用指向的对象上执行。这就是为什么你需要使用旧对象的属性创建一个新对象(使用Object.create),然后推送它。

替换

finalJson.push(finalJson[it])

with(不要使用此选项)

<击> finalJson.push(的Object.create(finalJson [它]))

或较慢但深拷贝的选项

finalJson.push(JSON.parse(JSON.stringify(finalJson[it])));

答案 1 :(得分:1)

将对象复制到新变量时,您正在创建引用。您需要创建一个新对象来防止这种情况,否则应用于一个对象的更改将应用​​于另一个对象。