将相似项从数组列表中分类为单独的对象

Ano*_*bie 4 javascript ecmascript-6 lodash

我有一系列从 API 获取的项目作为响应主体。

data = [{id: 1, category: "kitchen", name: "noodles"},
        {id: 2, category: "general", name: "Wi-Fi"},
        {id: 3, category: "sports", name: "Football"},]
Run Code Online (Sandbox Code Playgroud)

我想遍历数组,并获得如下数据:

var categorized = {
 kitchen: [{id: 1, category: "kitchen", name: "noodles"}],
 general : [{id: 2, category: "general", name: "Wi-Fi"}],
 sports : [{id: 3, category: "sports", name: "Football"}]
};
Run Code Online (Sandbox Code Playgroud)

是否有任何 lodash 方法或任何 ES6 快捷方式?

Kae*_*heG 5

回答您的问题“是否有 lodash 方法?” 是的:https : //lodash.com/docs/4.17.4#groupBy。对于您的具体示例:

const categorized = _.groupBy(data, 'category');
Run Code Online (Sandbox Code Playgroud)

编辑:您可以像另一个示例一样使用 ES6 滚动您自己的 groupBy 类型函数。但是,如果您无论如何都在使用 lodash,这会更干净。