2017-04-06 80 views
-1

JS對象的數組我有一些數據,我已經將其轉化爲對象的像一個數組:JSON對象的字符串數組轉換在JavaScript

[{"name": "aa", "birth":"19990101"}, 
{"name": "bb", "birth":"19990102"}, 
{"name": "cc", "birth":"19990103"}]; 

我想將其轉換爲一個像這樣的對象:

{"aa":"19990101","bb":"19990102","cc":"19990103"}; 

這樣做的最佳方法是什麼?謝謝!

回答

1

你可以用reduce簡單地做到這一點,

var x = [{"name": "aa", "birth":"19990101"}, 
{"name": "bb", "birth":"19990102"}, 
{"name": "cc", "birth":"19990103"}]; 

var result = x.reduce((a, b) => (a[b['name']] = b['birth'], a), {}); 
1

試試這個

var a = [{"name": "aa", "birth":"19990101"}, 
 
{"name": "bb", "birth":"19990102"}, 
 
{"name": "cc", "birth":"19990103"}]; 
 

 
var map = {}; a.forEach(function(item){ map[item.name] = item.birth; }) 
 

 
console.log(map);

2

你可以使用一些破壞和賦值給定鍵。

var array = [{ name: "aa", birth: "19990101" }, { name: "bb", birth: "19990102" }, { name: "cc", birth: "19990103" }], 
 
    object = array.reduce((r, { name, birth }) => (r[name] = birth, r), {}); 
 

 
console.log(object);

Object.assignspread syntax ...

var array = [{ name: "aa", birth: "19990101" }, { name: "bb", birth: "19990102" }, { name: "cc", birth: "19990103" }], 
 
    object = Object.assign({}, ...array.map(({ name, birth }) => ({ [name]: birth }))); 
 

 
console.log(object);

+0

'(R [名稱] =出生中,r)'是欺騙性:) – str

+0

解構的尼斯用法。注意! –

0

另一種方式可以是:

var values =[ 
 
    {"name": "aa", "birth":"19990101"}, 
 
    {"name": "bb", "birth":"19990102"}, 
 
    {"name": "cc", "birth":"19990103"} 
 
]; 
 

 
var result = []; 
 

 
for(var i = 0; i < values.length; i++){ 
 
    var item = {}; 
 
    item[values[i].name] = values[i].birth; 
 
    result.push(item); 
 
} 
 

 
console.log(result);

相關問題