得到一组数据,想要根据商店id(storeId)来分组处理改数据,请教一下有没有更好的方法???
写了一个reduce版本的,供参考
const groupGoodListByStoreId = (arr) => arr.reduce((info, item) => {
const { keyPosition, result } = info;
const { storeId } = item;
if (!(item.storeId in keyPosition)) {
result.push({ storeId, goodsList: [] });
keyPosition[storeId] = result.length - 1;
}
result[keyPosition[storeId]].goodsList.push(item);
return { keyPosition, result };
}, { keyPosition: {}, result: [] });
待转换的数据
const goodList = [
{ id: 1, storeId: 1 },
{ id: 2, storeId: 2 },
{ id: 3, storeId: 1 }
];
执行转换函数
const { result } = groupGoodListByStoreId(goodList);
console.log(result);
转换后的结果
[
{
"storeId": 1,
"goodsList": [
{
"id": 1,
"storeId": 1
},
{
"id": 3,
"storeId": 1
}
]
},
{
"storeId": 2,
"goodsList": [
{
"id": 2,
"storeId": 2
}
]
}
]
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答918 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
可以考虑一下lodash的groupBy