js实现groupby

初始结果是一个数组,最终得到一个对象。

javascript 复制代码
let arr = [{
   sex: 'male',
   name: 'xiaomi'
}, {
   sex: 'male',
   name: 'lisi'
}, {
   sex: 'female',
   name: 'zhangsan'
}]

最终得到:

代码:

javascript 复制代码
const groupBy = (list, key) => {
   const obj = {};
   list.map(item => {
       if (!obj[item[key]]) { //如果不存在这个属性
           obj[item[key]] = [];
       }
       obj[item[key]].push(item);
   });
   return obj;
}

简写:

javascript 复制代码
const group_signal = (data, key) => {
   return data.reduce(function(prev, cur) {
       (prev[cur[key]] = prev[cur[key]] || []).push(cur);
       return prev;
   }, {});
};
相关推荐
xiaoye-duck3 分钟前
C++ string 类使用超全攻略(下):修改、查找、获取及常见实用接口深度解析
开发语言·c++·stl
玉梅小洋5 分钟前
Chrome设置链接自动跳转新标签页而不是覆盖
前端·chrome
EndingCoder11 分钟前
反射和元数据:高级装饰器用法
linux·运维·前端·ubuntu·typescript
Tao____12 分钟前
可以本地部署的物联网平台
java·开发语言·物联网·mqtt·低代码
码界奇点13 分钟前
基于DDD与CQRS的Java企业级应用框架设计与实现
java·开发语言·c++·毕业设计·源代码管理
柏林以东_14 分钟前
线程安全的数据集合
java·开发语言·安全
Marshmallowc15 分钟前
React性能优化:useState初始值为什么要用箭头函数?深度解析Lazy Initialization与Fiber机制
前端·react.js·性能优化·前端框架·react hooks
喵喵喵小鱼15 分钟前
arcgis JavaScript api实现同时展示多个撒点气泡
开发语言·javascript·arcgis
fengfuyao98516 分钟前
基于MATLAB的螺旋锥齿轮齿面接触分析(TCA)实现
开发语言·matlab
Coder_Boy_18 分钟前
基于SpringAI的在线考试系统-试卷管理模块完整优化方案
前端·人工智能·spring boot·架构·领域驱动