我有一个对象数组,长得像这样:
var A = [{key:"key1",val:1},{key:"key2",val:2},...,{key:"keyn",val:n}]
我希望将A
转换为一个对象:
{
key1: 1,
key2: 2,
...
keyn: n
}
这种情况从未出现过,但我在考虑使用mapKeys
和mapValues
,但感觉有更简单的答案。谢谢!
我有一个对象数组,长得像这样:
var A = [{key:"key1",val:1},{key:"key2",val:2},...,{key:"keyn",val:n}]
我希望将A
转换为一个对象:
{
key1: 1,
key2: 2,
...
keyn: n
}
这种情况从未出现过,但我在考虑使用mapKeys
和mapValues
,但感觉有更简单的答案。谢谢!
function transformArray(arraySrc){
return arraySrc.reduce(function(prev, curr){
prev[curr.key] = curr.val;
return prev;
}, {});
}
transformArray([{key:"key1",val:1},{key:"key2",val:2},{key:"key3",val:3}]);
let list = [{"foo":"bar"},{"baz":"faz"},{"label":"Hello, World!"}];
let singleObject = _.extend.apply({}, list);
输出:
{foo: "bar", baz: "faz", label: "Hello, World!"}
var result = _(A).keyBy('key').mapValues('val').value();
将@ry的回答更新为较新版本的lodash:
var result = _.zipObject(
_.map(A, 'key'),
_.map(A, 'val')
);
也许有一种内置的方式我找不到,但是:
var result = _.zipObject(
_.pluck(A, 'key'),
_.pluck(A, 'val')
);
Array.prototype.reduce
,但 @minitech 使用了 lodash 回答,所以我接受了他/她的回答。 - ShaharZreturn arraySrc.reduce(...);
。;-) - RobG_.reduce
替换Array.prototype.reduce
。 - mu is too short