按属性lodash映射集合项

时间:2016-08-12 12:03:12

标签: javascript lodash

这样的数据:

[
   {type: "one", ...fields},
   {type: "one", ...fields},
   {type: "two", ...fields}
]

应转换为:

{
   one: [...itemsWithType == "one"],
   two: [...itemsWithType == "two"]
}

我知道如何在vanillas ES5 / ES6中做到这一点..我正在寻找一个特殊的lodash命令。我只是迷失在文档中,也许有人可以告诉我这个准备是如何调用的,我可以注意到它。

我正在寻找一个像

这样的简单lodash函数
mapByProp(collection, 'type');

是的,这可以写成这样:

const mapByProp = (array, t) => {
   return array.reduce((m, i) => {
     !m[i[t]] && m[i[t]] = [];
     m[i[t]].push(i);

     return m;
   }, {});
};

但如果有lodash功能,我很乐意使用它

1 个答案:

答案 0 :(得分:2)

您可以使用_.groupBy

var a = [
   {type: "one", wow: 1},
   {type: "one", wow: 2},
   {type: "two", wow: 3}
];

var result = _.groupBy(a, 'type');