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

标签 javascript jquery json

我在 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/

相关文章:

javascript - 防止 jQuery 函数在当前函数完成之前执行

php - js 无法识别重音字符 onclick

javascript - 如何通过 Lodash 拆分包含另一个数组的对象数组

php - iOS URLSession 错误 "JSON text did not start with array or object and option to allow fragments not set."

innerText 值的 jQuery 选择器语法

javascript - 加载时不显示 Angular 数据

javascript - selenium webdriver javascript 查询

javascript - iOS (4.3) safari 音频问题(多个文件)

javascript - 将内容添加到选取框间隔

php - 当有可用更新图像时,如何防止旧图像出现在页面重新加载上