Lodash /下划线:将对象数组转换为单个对象

Sha*_*arZ 3 javascript underscore.js lodash

我有一个看起来像这样的对象数组:

var A = [{key:"key1",val:1},{key:"key2",val:2},...,{key:"keyn",val:n}]
Run Code Online (Sandbox Code Playgroud)

我想转换A为一个对象:

{
    key1: 1,
    key2: 2,
    ...
    keyn: n
}
Run Code Online (Sandbox Code Playgroud)

这个用例从来没有出现过,但我正在考虑做什么mapKeys然后mapValues我觉得有一个更简单的答案.谢谢!

ken*_*oft 7

你真的不需要lodash来实现这一目标.只需使用array.reduce()执行此操作即可.请参阅以下代码示例:

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}]);
Run Code Online (Sandbox Code Playgroud)


Ry-*_*Ry- 2

我可能可以\xe2\x80\x99t找到一种内置方法,但是:

\n\n
var result = _.zipObject(\n    _.pluck(A, 'key'),\n    _.pluck(A, 'val')\n);\n
Run Code Online (Sandbox Code Playgroud)\n