请教一个数组合并方面的问题

Colorful 7月前 112

let arr = [{a:21,b:22,c:5},{a:11,b:21,c:4},{a:31,b:'2a',c:4},{a:'1aaa',b:'2a',c:5}]

我想合并成

let arr2 = [{c:4,child:[{a:11,b:21,c:4},{a:31,b:'2a',c:4}]},{c:5,child:[{a:21,b:22,c:5},{a:'1aaa',b:'2a',c:5}]}];

就是把 C 4 相同的数据,整合到一个数组下面

最新回复 (6)
  • shintendo 6月前
    引用 2
    lodash.groupBy
  • shintendo 6月前
    引用 3
    原生的话:[...Set(arr.map(x => x.c))].map(c => ({c, child: arr.filter(x => x.c === c)}))
  • shintendo 6月前
    引用 4
    少了个 new
    [...new Set(arr.map(x => x.c))].map(c => ({c, child: arr.filter(x => x.c === c)}))
  • otakustay 6月前
    引用 5
    const groups = groupBy(arr, i => i.c);
    Object.entries(groups).map(([c, child]) => ({c, child}));
  • 楼主 Colorful 6月前
    引用 6
    @shintendo 懂了,涨知识了,感谢厂
  • 楼主 Colorful 6月前
    引用 7
    第一次了解 groupBy 这个语法,太感谢了
  • 游客
    8
返回