2017-03-23 7 views
-3

Ich muss Objektschlüssel Werte von JSON-Arrays mit Schlüssel kombinieren.Kombinieren Sie Objektschlüssel Werte von JSON-Arrays durch Schlüssel, Javascript

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

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

Ich brauche einen kombinierte Objektschlüssel Werte in Javascript, in der folgenden Art und Weise

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

So mag, indem Schlüssel eindeutige Werte auf Objekt von json-Arrays verbinden.

+0

Bitte teilen Sie Ihre Mühe/code – Rajesh

+0

bitte Ihren Code teilen, oder was Sie haben versucht, bis jetzt in der Frage –

Antwort

0

Was Sie suchen, wenn Sie die Arrays verbinden, ist definiert als union (siehe here) in der Mathematik (Mengenlehre).

Ein ähnliches Thema bezüglich der Implementierung einer Union wurde geöffnet here.

0

Sie können die forEach() Schleife zum Array hinzufügen und Set, um Dubletten vom Objektwert zu entfernen.

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

Sollten Sie ohne eine Frage beantworten Anstrengung? – Rajesh

+0

@Nenad Vracar Funktioniert das mit diesen Daten? ** json1 ** = [{"key": "xyz", "Wert": [{"text": "# incident/test"}]}, {"key ":" @ abcd "," Wert ": [{" text ":" 2 "}]," Muster ":"^([0-9] | [1-9] [0-9]) $ "} ] ** json2 ** = [{"key": "xyz", "wert": [{"text": "# test"}, {"text": "# vorfall/test"}], "check": true}, {"key": "@ abcd", "Wert": [{"text": "2"}], "pattern": "^ ([0-9] | [1-9 ] [0-9]) $ "," check ": true}] –

+0

Sie sollten es versuchen. –

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))

Verwandte Themen