2016-05-20 49 views
1

的關鍵名字值和值中的對象的數組鍵名,我有對象的數組這樣如何改變在JavaScript

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

我想以上對象的數組轉換成這樣

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

請有人能幫助我。

+0

這將有助於 - HTTP://計算器的.com /一個/4774345分之23013726 – dan

回答

0

這應該這樣做

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

您可以使用Object.keys獲得的按鍵陣列中的對象。這可以用來訪問對象中的每個值。

例如:

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

此代碼不會創建一個新的實例,它只是反轉在同一個對象的鍵:

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)

這一個創建一個新對象保持原來不變:

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)

您可以創建一個函數來重用代碼。

0

你可以這樣做。

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

只是遍歷所有對象的數組和對象交流的對象鍵的值:

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