首页 > 解决方案 > 拆分数组以包含基于 id 的较小数组

问题描述

我有一个示例数组:

arr = [{id:1, count: 2}, {id: 2, count: 6}, {id: 2, count: 4}, {id: 1, count:4}]

我需要将其转换为包含基于 id 内部对象的数组:

[[{id:1, count: 2}, {id: 1, count:4}], [{id: 2, count: 6}, {id: 2, count: 4}]]

如果我将有 3 个不同的 id - 那么它将在内部有 3 个数组,依此类推。

如果您知道任何好的解决方案 - 请告诉我。Lodash也可以。

标签: javascriptlodash

解决方案


您可以使用groupByfrom lodash 来获取这样的地图:

{
    '1': [{id:1, count: 2}, {id: 1, count:4}],
    '2': [{id: 2, count: 6}, {id: 2, count: 4}]]
}

然后您可以使用将其转换为数组Object.values()

基本上你需要这两行:

const groupedById = _.groupBy(items, item => item.id);
const result = Object.values(groupedById);

推荐阅读