复制对象,然后更新 JSON 对象中的值
duplicate the object and then update a value in JSON object
我在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])));
将对象复制到新变量时,正在创建引用。您需要创建一个新对象来防止这种情况,否则应用于一个对象的更改将应用于另一个对象。
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 用javascript从列表对象(JSON的)构建diffrent选项卡
- php请求带有多个对象json-jquery
- AngularJS,过滤器:如何将一个巨大的对象(JSON)变成一个数组
- 动态属性对象 - JSON
- JavaScript 对象 (JSON) 中的动态设置值
- 从数组查询获取对象 JSON 值时出错
- 使用jQuerygetJSON将多维对象JSON转换为HTML
- 需要从 Angular JS 应用程序中的另一个 JSON 对象数组填充 JSON 数组的每个对象 JSON 对象数组
- 嵌套对象JSON排序JavaScript
- PHP在MySQL中保存来自Javascript的对象"JSON.stringify"通过Ajax
- 将JavaScript对象/ JSON转换为PHP数组
- JSON对象.JSON对象内部
- 访问对象的对象- JSON API
- 数组到对象JSON
- Message":"传入的无效对象(JSON数据格式化问题)