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;
   }, {});
};
相关推荐
摇滚侠4 分钟前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
chouchuang5 分钟前
day-030-综合练习-笔记管理器
开发语言·笔记·python
触底反弹30 分钟前
🔥 RAG 到底是怎么工作的?掰开揉碎了给你讲明白!
javascript·人工智能·后端
Hilaku36 分钟前
前端大裁员背后的恐慌:我们还剩什么底牌?
前端·javascript·程序员
云空1 小时前
《Three.js 3D实例大全》
开发语言·javascript·3d·three.js
techdashen1 小时前
Go 1.26 新增 `bytes.Buffer.Peek`:只看数据,不移动读取位置
开发语言·后端·golang
咖啡无伴侣1 小时前
unplugin-auto-import 使用详解+面试高频考点
前端·架构
C137的本贾尼1 小时前
第七篇:消息队列(MQ)——就是个带存储的异步通信管道
java·开发语言·中间件
搬砖记录员1 小时前
录屏文件打不开?H.265兼容性踩坑与4种实战方案
前端
明月_清风2 小时前
SEO 完全指南:从底层原理到实战应用场景
前端·seo