2016-06-23 7 views
-1
  • Erste JSON in EingangsWie fusionieren I 2 json dieser Art in Javascript

    var obj1 = [{ 
           "name":"manu", 
           "age":23, 
           "occupation":"SE" 
          }, 
          { 
           "name":"test", 
           "age":22, 
           "occupation":"TE" 
          } 
          ]; 
    
    • Zweite JSON in Eingangs

      var obj2 = [{ 
            "age":23, 
            "name":"manu", 
            "gender":"male" 
           }, 
           { 
            "age":22, 
            "name":"test", 
            "gender":"male" 
           } 
           ]; 
      
    • JSON nach erforderlich Resultierende Verschmelzung

      var result = [{ 
            "name":"manu", 
            "age":23, 
            "occupation":"SE", 
            "gender":"male" 
           }, 
           { 
            "name":"test", 
            "age":22, 
            "occupation":"TE", 
            "gender":"male" 
           } 
           ]; 
      
    • finden Sie in der Anordnung, in der Schlüssel in JSON angeordnet sind

    • Sie sind nicht in derselben Reihenfolge (Alter und Name) Schlüssel in Objekt
+0

Was ist die Frage? Warum sollte man sich auch für Tastenfolgen interessieren? – PeeHaa

+0

In Javascript haben Objekte keine Reihenfolge. Zum Zusammenführen siehe [diese Frage] (http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically). – Blackhole

+0

Hashes Keys Reihenfolge ist die Implementierung definiert, also nichts, was Sie tun können über ihre Reihenfolge tatsächlich :( – axelduch

Antwort

1

Sie einen speziellen Rückruf der für die Zusammenführung verwenden könnte Arrays zu einem neuen result mit der passenden key und allen anderen Eigenschaften.

function mergeTo(target, key) { 
 
    var ref = Object.create(null); 
 
    return function (o) { 
 
     if (!ref[o[key]]) { 
 
      ref[o[key]] = {}; 
 
      target.push(ref[o[key]]); 
 
     } 
 
     Object.keys(o).forEach(function (k) { 
 
      ref[o[key]][k] = o[k]; 
 
     }); 
 
    }; 
 
} 
 

 
var obj1 = [{ "name": "manu", "age": 23, "occupation": "SE" }, { "name": "test", "age": 22, "occupation": "TE" }], 
 
    obj2 = [{ "age": 23, "name": "manu", "gender": "male" }, { "age": 22, "name": "test", "gender": "male" }], 
 
    result = [], 
 
    merge = mergeTo(result, 'name'); 
 

 
obj1.forEach(merge); 
 
obj2.forEach(merge); 
 
    
 
console.log(result);

0

Sie haben zwei Arrays, wobei jeder Index in dem Array ein Objekt ist. Wenn die Array-Indizes zusammenpassen, wie in Ihrem Beispiel, dann einfach loopen und zuweisen.

var length = obj1.length; 
for(var idx = 0; idx < length; idx++) 
{ 
    var tmpObj = obj2[ idx ]; 
    Object.keys(tmpObj).forEach(function(key,index) 
    { 
    // key: the name of the object key 
    // index: the ordinal position of the key within the object 

    // create new object property based upon the variable key 
    // and assign it the corresponding value from obj2 
    obj1[ idx ][ key ] = tmpObj.key; 
    }); 
} 

Iterate over Object

Using variables as key names

Verwandte Themen