2016-05-20 14 views
1

内のオブジェクトの配列で、キー名に値と値のキー名を変更するにはどのように私はこのジャバスクリプト

のようにオブジェクトの上の配列を変換したいこの

[{ 
    "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:// stackoverflowの.com/a/23013726/4774345 – 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

あなたはまた、例えば、アンダースコアが反転機能http://underscorejs.org/#invertを持って、それを行うためにいくつかのライブラリを使用することができます。

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)

この1つは変わらず、オリジナルを保ち、新しいオブジェクトを作成します。

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