2017-03-23 15 views
-3

json配列のオブジェクトキー値をキーで結合する必要があります。json配列のオブジェクトキー値をキー、JavaScriptで結合する

json1 = [ 
      {key:'xyz', value:['a','b']}, 
      {key:'pqrs', value:['x','y']} 
     ] 

json2 = [ 
      {key:'xyz', value:['c','b']}, 
      {key:'pqrs', value:['e','f']} 
     ] 

私は次のよう

json3 = [ 
       {key:'xyz', value:['a','b','c']}, 
       {key:'pqrs', value:['x','y','e','f']} 
      ] 

そうではJavaScriptで結合オブジェクトのキー値を必要とするが、キーによってJSON配列からオブジェクトに一意の値を結合したいです。

+0

あなたの努力/コード – Rajesh

+0

を共有してください、あなたのコードまたは何を質問 –

答えて

0

配列を結合するときに探しているものは、数学(集合理論)のunionhere参照)と定義されています。

ユニオンの実装に関する同様のトピックが開かれましたhere

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)

+0

で今まで試してみましたが何もせずに質問に答える必要がありますを共有してください努力? – Rajesh

+0

@Nenad Vracarこれはこのデータで動作しますか? ** json1 ** = [{"key": "xyz"、 "value":[{"text": "#incident/test"}]}、{"key ":" {"text": "2"} "、" pattern ":" ^([0-9] | [1-9] [0-9])$ "}:" @ abcd "、" value " ] {0} {{"key": "xyz"、 "value":[{"text": "#test"}、{"text": "#incident/test"}] "check":true}、{"key": "@ abcd"、 "value":[{"text": "2"}]、 "pattern": "^([0-9] | [1-9 ] [0-9])$ "、" check ":true}] –

+0

試してみてください。 –

0

function combinedJson(json1, json2) { 
 
\t var ret = [] 
 
    for (let i = json1.length; i--;) { 
 
    \t json2Obj = json2.find(item => item.key === json1[i].key) 
 
    \t ret.push({ 
 
    \t \t key: json1[i].key, 
 
    \t \t value: json1[i].value.concat(
 
    \t \t \t json2Obj ? json2Obj.value : [] 
 
    \t \t) 
 
    \t }) 
 
    } 
 
    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))

関連する問題