这样的数据:
[
{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功能,我很乐意使用它
答案 0 :(得分:2)
您可以使用_.groupBy:
var a = [
{type: "one", wow: 1},
{type: "one", wow: 2},
{type: "two", wow: 3}
];
var result = _.groupBy(a, 'type');