如果json对象中的键相同,则替换值
replace value if key is same in json object
我有以下数组,由json对象组成:
items = [{"Id":"car","color":"blue"},{"Id":"truck","color":"red"}]
我有新的json对象。如果该对象(newItem)的"Id"与items中的"Id"匹配,我想替换"color"的值。
newItem = {"Id":"car","color":"yellow"}
所以,我希望输出如下:
items = [{"Id":"car","color":"yellow"},{"Id":"truck","color":"red"}]
这是我到目前为止所做的:
for (var i=0; i<items.length; i++) {
var x = items[i];
if(x.Id == newItem.Id){ //first check if id matches
if (JSON.stringify(items[i]) == JSON.stringify(newItem)) {
alert('objects are same');
return ;
}
else {
var newColor = JSON.stringify(x).replace(x.color, newItem.color);
alert(JSON.parse(newColor));
}
}
}
正在工作。这里有一种方法通过使用来自Array.prototype.forEach:
的.forEach
来实现var items = [{"Id":"car","color":"blue"},{"Id":"truck","color":"red"}];
var newItem = {"Id":"car","color":"yellow"}
items.forEach(function(item) {
if (newItem.Id === item.Id) {
item.color = newItem.color
}
});
试试这个:
items.forEach(function(item) {
if(item.Id == newItem.Id && item.color != newItem.color){
item.color = newItem.color;
}
});
检查工作演示:JSFiddle.
使用Array.prototype.map
简洁明了:
items.map(function(obj) {
(obj.Id === newItem.Id) && (obj.color = newItem.color);
});
下面的代码应该可以为您工作。一旦id匹配,就可以退出循环。在性能方面稍微好一点。
items = [{"Id":"car","color":"blue"},{"Id":"truck","color":"red"}];
newItem = {"Id":"car","color":"yellow"};
for (var i = 0; i < items.length; i++){
if (newItem.id == items[i].id ){
items[i].color = newItem.color;
break;
}
}
这是一种使用jQuery的方法:
var items = [
{"Id": "car", "color": "blue"},
{"Id": "truck", "color": "red"}
];
var newItem = {
"Id": "car",
"color": "yellow"
};
$(items).each(function(item) {
if ($(this)[0].Id == newItem.Id) {
$(this)[0].color = newItem.color
}
});
对于这个特定的问题来说,Underscore.js库并不是严格必需的,但是对于处理集合来说,它是非常好的。
var items = [{"Id":"car","color":"blue"},{"Id":"truck","color":"red"}];
var newItem = {"Id":"car","color":"yellow"};
_.each(items, function(item) {
if (item.Id === newItem.Id) item.color = newItem.color
});
相关文章:
- Javascript JSON对象替换对象中的字符串
- 使用捕获组查找和替换json字符串中出现的所有短语
- 替换 JSON 中的字符串
- 如何使用替换器 param json.stringify 访问嵌套对象
- 替换json文件中文本中的值
- 替换JSON对象中的值
- 替换JSON中的键:值对
- 使用 javascript 更新后替换 JSON 对象
- 查找和替换 JSON 文件中的项目
- 替换json对象中的单词
- 使用纯JavaScript替换JSON中某个值的所有实例
- 替换JSON中的嵌套字符串
- 在Javascript中动态替换JSON属性
- 替换json中的双引号
- 使用jquery删除和替换JSON的值
- 使用javascript/underscore.js查找并替换json对象中的属性值
- Jquery,JSON:替换JSON数组的部分
- 替换JSON中的属性值
- 用另一个字符串替换json的字符串
- 以编程方式替换JSON对象