2016-05-20 7 views
1

ich habe Array von Objekten wie dieseWie die Schlüsselnamen auf Werte und Werte Schlüsselnamen in Array von Objekten in JavaScript ändern

[{ 
    "First Name": "fname", 
    "Last Name": "lname" 
}, { 
    "Root cause": "root" 
}, { 
    "Comapany Name": "company" 
}] 

ich will in die obige Array von Objekten konvertieren wie diese

[{ 
    "fname": "First Name", 
    "lname": "Last Name" 
}, { 
    "root": "Root cause" 
}, { 
    "company": "Comapany Name" 
}] 

bitte kann mir jemand dabei helfen.

+0

Dies sollte helfen - http: // Stackoverflow .com/a/23013726/4774345 – dan

Antwort

0

Dies sollte es

var arr = [ {"First Name":"fname", "Last Name":"lname"}, 
      {"Root cause":"root"}, 
      {"Comapany Name":"company"} 
      ];    
var newArr = []; 
for(var i = 0; i < arr.length; ++i) { 
    var obj = {}; 
    for(key in arr[i]) { 
     if (arr[i].hasOwnProperty(key)) { 
      obj[arr[i][key]] = key; 
     } 
    } 
    newArr.push(obj); 
} 
0

tun können Sie Object.keys verwenden, um eine Anordnung von Tasten in einem Objekt zu erhalten. Dies kann verwendet werden, um auf jeden Wert im Objekt zuzugreifen.

Zum Beispiel:

var newArray = myArray.map(function(obj){ 
    var keys = Object.keys(obj); 
    var newObj = {}; 

    keys.forEach(function(key){ 
     var newKey = obj[key]; 
     newObj[newKey] = key; 
    }); 

    return newObj; 
}); 
0

ist dieser Code nicht eine neue Instanz erstellen, es ist nur die Schlüssel in das gleiche Objekt invertiert:

var hash = { 'key1': 'val1', 'key2': 'val2' }; 
 

 
console.log('before', hash) 
 

 
for (var key in hash) { 
 
    hash[hash[key]] = key; 
 
    delete hash[key]; 
 
} 
 

 
console.log('after', hash)

Dieser erzeugt ein neues Objekt das Original unverändert bleibt:

var hash = { 'key1': 'val1', 'key2': 'val2' }; 
 

 
console.log('before', hash) 
 

 
var newHash = {}; 
 

 
for (var key in hash) { 
 
    newHash[hash[key]] = key; 
 
} 
 

 
console.log('new hash inverted', newHash)

Sie können eine Funktion zur Wiederverwendung des Codes erstellen.

0

Sie können es so machen.

var arr1 =[{"First Name":"fname", "Last Name":"lname"}, 
 
{"Root cause":"root"}, 
 
{"Comapany Name":"company"} 
 
] 
 

 
var arr2=[]; 
 

 
for(var i=0; i<arr1.length; i++){ 
 
    
 
    var obj = {}; 
 
    var foo= arr1[i]; 
 
    for(var key in foo){ 
 
     obj[foo[key]]=key; 
 
    }   
 
    arr2.push(obj); 
 
} 
 

 
console.log(arr2);

0

Gerade iterieren alle Array von Objekten und den Austausch Objektwerte für Objektschlüssel:

var a = [{"First Name": "fname", "Last Name": "lname"}, {"Root cause": "root"}, {"Comapany Name": "company"}]; 
 

 
a.forEach(function(o) { 
 
    for (var key in o) { 
 
     o[o[key]] = key; 
 
     delete o[key]; 
 
    } 
 
}); 
 

 
console.log(a);

Verwandte Themen