javascript - 拆分数组以包含基于 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也可以。
解决方案
您可以使用groupBy
from 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);
推荐阅读
- python - scikit-image (io.imread) 返回浮点数组,这已经标准化了吗?
- react-native - 为什么 BackHandler.addEventListener 在点击设备的后退按钮时会触发多次?
- azure-devops - Azure DevOps 中的“团队上下文感知”查询
- node.js - 如何以保存在节点服务器上的角度显示图像
- python - 如何决定 keras 密集层构造函数使用哪些参数?
- python - 从scrapy获取无
- javascript - JavaScript 中的 Promise 即使没有被消耗也能保证取得进展吗?
- azure-cosmosdb - Azure cosmos db 存储过程不起作用
- scala - 如何在scala函数式编程中实现db操作
- angular - 最简单的 ControlValueAccessor 不起作用