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

duplicate the object and then update a value in JSON object

本文关键字:对象 JSON 更新 然后 复制      更新时间:2023-09-26

我在jquery中有一个json对象数组。我想复制一个对象,然后根据 if 条件替换原始对象中的键值。但是每次我替换单个对象中的值时,它都会替换两个对象中的值。我只想替换一个,即原版我使用了中断并返回错误语句,但不起作用。

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

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