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;
   }, {});
};
相关推荐
烛阴6 分钟前
Claude CLI AskUserQuestion 工具详解:让 AI 开口问你
前端·claude
CoderCodingNo11 分钟前
【GESP】C++七级考试大纲知识点梳理, (1) 数学库常用函数
开发语言·c++
wal131452019 分钟前
OpenClaw教程(九)—— 彻底告别!OpenClaw 卸载不残留指南
前端·网络·人工智能·chrome·安全·openclaw
老鱼说AI29 分钟前
CUDA架构与高性能程序设计:异构数据并行计算
开发语言·c++·人工智能·算法·架构·cuda
mon_star°36 分钟前
在TypeScript中,接口MenuItem定义中,为什么有的属性带问号?,有的不带呢?
前端
牛奶1 小时前
分享一个开源项目,让 AI 辅助开发真正高效起来
前端·人工智能·全栈
次顶级2 小时前
表单多文件上传和其他参数处理
前端·javascript·html
子超兄2 小时前
线程池相关问题
java·开发语言
why技术2 小时前
我拿到了腾讯QClaw的内测码,然后沉默了。
前端·后端