我想要这段代码:
var arr = [
{ key: 'foo', val: 'bar' },
{ key: 'hello', val: 'world' }
];
var result = arr.map((i) => ([i.key]: i.val)); //something like this
console.log(result);
返回:
{foo: 'bar', hello: 'world'}
这是否可以在ECMA6中使用?
答案 0 :(得分:5)
Array#map
方法用于生成新数组。要使用Array#reduce
方法缩减为单个对象。
var arr = [{
key: 'foo',
val: 'bar'
},
{
key: 'hello',
val: 'world'
}
];
// define the property and return the object reference
// where define the initial value as an empty object for result
var result = arr.reduce((obj, o) => (obj[o.key] = o.val, obj), {});
console.log(result);

答案 1 :(得分:1)
您可以使用forEach
方法:
var arr = [
{ key: 'foo', val: 'bar' },
{ key: 'hello', val: 'world' }
];
var obj = {};
arr.forEach(function(item){
obj[item.key] = item.val;
});
console.log(obj);

答案 2 :(得分:0)
您可以使用Array.prototype.reduce执行此操作:
arr.reduce(function(map, obj) {
map[obj.key] = obj.val;
return map;
}, {});