2017-04-06 44 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);