我的json
如下所示
[{
"attributeId": 6,
"attributeType": "price",
"attributeValue": "{10,20,100}",
"displayOn": "true",
"attributeName": "price"
},
{
"attributeId": 6,
"attributeType": "price",
"attributeName": "price",
"displayOn": "true",
"attributeValue": "{21,40,200}"
}
]
我想合并到单一的没有重复的内容,如
[{
"attributeId": 6,
"attributeType": "price",
"attributeValue": "{10,20,100}",
"displayOn": "true",
"attributeName": "price",
"attributeValue": "{21,40,200}"
}]
我尝试了extend
和concat
功能。但是,我无法弄清楚这样做的正确方法。请帮帮我。
答案 0 :(得分:0)
只要您希望稍后在数组中的对象覆盖数组中较早的对象值,您就可以reduce
数组并将每个旧对象复制到新对象中:
var arr = [{...}, {...}];
var merged = arr.reduce(function(a,b) {
for (var key in a) {
a[key] = b[key];
}
return a;
});
使用ES6语法和功能对此进行了大量清理:
let arr = [{...}, {...}];
let merged = arr.reduce((a, b) => Object.assign(b, a));
请注意,在您的示例中,数组实体不是JSON字符串,而是解析对象。如果您首先需要将JSON字符串解析为对象,则需要在减少数组之前执行此操作。
同样不是对象不能像attributeValue
那样拥有相同的属性键两次。如果需要保留此值,您还需要其他一些方法。