使用lodash将对象数组转换为数组对象

4
标题有点令人困惑,但我基本上想将这个转换为:
[
    {a: 1, b: 2, c:3},
    {a: 4, b: 5, c:6},
    {a: 7, b: 8, c:9}
]

into:

{
  a: [1,4,7],
  b: [2,5,8],
  c: [3,6,9]
}

使用lodash(要求)。有任何想法吗?
2个回答

3

这里有一个使用lodash的解决方案,映射遍历键,并从数据中提取每个键的值,最后使用_.zipOobject构建结果。

var keys = _.keys(data[0]);

var result = _.zipObject(keys, _.map(keys, key => _.map(data, key)));

1
请看这里:

查找_.map在这里

input = [
    {a: 1, b: 2, c:3},
    {a: 4, b: 5, c:6},
    {a: 7, b: 8, c:9}
];

output = {};

_.map(input, function(subarray){
    _.map(subarray, function(value, key){
            output[key] || (output[key] = []);
            output[key].push(value);
    });
});

console.log(output);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接