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

2019-12-10 09:49:26 +08:00
 Colorful

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 相同的数据,整合到一个数组下面

2554 次点击
所在节点    前端开发
6 条回复
shintendo
2019-12-10 10:05:12 +08:00
lodash.groupBy
shintendo
2019-12-10 10:11:19 +08:00
原生的话:[...Set(arr.map(x => x.c))].map(c => ({c, child: arr.filter(x => x.c === c)}))
shintendo
2019-12-10 10:12:21 +08:00
少了个 new
[...new Set(arr.map(x => x.c))].map(c => ({c, child: arr.filter(x => x.c === c)}))
otakustay
2019-12-10 11:12:48 +08:00
const groups = groupBy(arr, i => i.c);
Object.entries(groups).map(([c, child]) => ({c, child}));
Colorful
2019-12-10 12:14:35 +08:00
@shintendo 懂了,涨知识了,感谢厂
Colorful
2019-12-10 12:15:02 +08:00
第一次了解 groupBy 这个语法,太感谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/627497

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX