对象的转换阵列键
问题描述:
反对说,我有一个数组:对象的转换阵列键
[ { name: 'A', count: 100 }, { name: 'B', count: 200 } ]
我怎样才能得到一个对象:
{ A : 100, B : 200 }
答
尝试利用Array.prototype.forEach()
迭代特性,阵列的值,设置新对象属性,输入数组值
var arr = [ { name: 'A', count: 100 }, { name: 'B', count: 200 } ];
// create object
var res = {};
// iterate `arr` , set property of `res` to `name` property of
// object within `arr` , set value of `res[val.name]` to value
// of property `count` within `arr`
arr.forEach(function(val, key) {
res[val.name] = val.count
});
console.log(res);
答
看起来像一个很大的机会无穷大到练习使用Array.prototype.reduce
(或reduceRight,这取决于所需的行为)
[{name: 'A', count: 100}, {name: 'B', count: 200}].reduceRight(
function (o, e) {o[e.name] = e.count; return o;},
{}
); // {B: 200, A: 100}
这也可以很容易地修改,以成为一个夏天,
o[e.name] = (o[e.name] || 0) + e.count;