前言
用到了数组的分组方法,之前查询过最新的ES版本里面Array.prototype.groupBy(), 似乎暂时无法使用
所以干脆学了一下reduce写出一个自用版本
直接上源码:
newObj = this.MyData.reduce((acc, item) => { // acc 前置, item 后置
if (acc[item.targetID]) { // 如果前一个条件存在,说明可以分进同一组
acc[item.targetID].push(item); // 往前一个条件组push内容
} else { // 第一次分组创造条件或与前一次不同
acc[item.targetID] = [item]; // 创建新数组,扔进该条件的内容
}
return acc;
}, {}); // acc = {}
简化(转载dalao,阅读性不太好):
newObj = this.MyData.reduce((acc,item)=>{
...arr, // 解构前一个
[item.targetID]: [...(acc[item.targetID] ?? []), item], // 前一个存在相同条件则解构放入,然后放入当前
},{});
总结
希望groupBy() 赶紧出来呜呜。。菜鸟玩不来太难的东西