我需要按键组合来自json数组的对象键值。
json1 = [
{key:'xyz', value:['a','b']},
{key:'pqrs', value:['x','y']}
]
json2 = [
{key:'xyz', value:['c','b']},
{key:'pqrs', value:['e','f']}
]
我需要以下列方式在javascript中组合对象键值
json3 = [
{key:'xyz', value:['a','b','c']},
{key:'pqrs', value:['x','y','e','f']}
]
因此,希望按键组合json数组中对象的唯一值。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用forEach()
循环添加到数组,使用Set
删除对象值的重复项。
var json1 = [{key:'xyz', value:['a','b']},{key:'pqrs', value:['x','y']}]
var json2 = [{key:'xyz', value:['c','b']},{key:'pqrs', value:['e','f']}]
var result = []
json1.concat(json2).forEach(function(e) {
if(!this[e.key]) this[e.key] = e, result.push(this[e.key])
else this[e.key].value = [...new Set(this[e.key].value.concat(e.value))]
}, {})
console.log(result)
答案 2 :(得分:0)
function combinedJson(json1, json2) {
var ret = []
for (let i = json1.length; i--;) {
json2Obj = json2.find(item => item.key === json1[i].key)
ret.push({
key: json1[i].key,
value: json1[i].value.concat(
json2Obj ? json2Obj.value : []
)
})
}
return ret
}
json1 = [
{ key: 'xyz', value: ['a', 'b'] },
{ key: 'pqrs', value: ['x', 'y'] }
]
json2 = [
{ key: 'xyz', value: ['c', 'b'] },
{ key: 'pqrs', value: ['e', 'f'] }
]
console.log(combinedJson(json1, json2))