js 数组对象怎么根据多个字段分组
原数组
arr = [
{status:1,opp:2,ad:'11'},
{status:1,opp:2,ad:'22'},
{status:1,opp:3,ad:'33'},
{status:2,opp:4,ad:'44'},
{status:3,opp:5,ad:'55'}
]
处理后的数组
arr1 = [
{status:1,opp:2,add:['11','22']},
{status:1,opp:3:add:['33']}
]
arr2 = [
{status:2,opp:4:add:['44']}
]
arr3 = [
{status:3,opp:5:add:['55']}
]
怎么根据status和opp来判断分组
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
处理过程就是一个“分组 → 映射”,映射过程中再进行一次“分组→映射”。下面是用 Lodash 处理的
看起来每一步都有循环,不过 Lodash 会自己去优化多个循环,不用太 Care。
groupBy
也可以自己写,比如下面这个,如果有mapper
就对组成员进行映射(返回数组),没有直接返回分组结果对象(返回对象)调用过程如下:
思路:可以通过一次循环,把arr变成下面的obj对象,通过Object.values(obj)获取对象的value值,就可以了
具体代码如下
时间复杂度O(N*Log(N)),其中N为数组长度
其实多看看就可以了