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;
   }, {});
};
相关推荐
小奶包他干奶奶1 分钟前
将svg对象化,并动态修改svg图标的颜色、尺寸等
前端·html
Lee川12 分钟前
React 快速入门:Vue 开发者指南
前端·vue.js·react.js
进击的尘埃26 分钟前
基于 LangChain.js 的前端 Agent 工作流编排:Tool 注册、思维链可视化与多步推理的实时 DAG 渲染
javascript
用户61581396951632 分钟前
Elpis: 基于vue3+webpack5+nodejs搭建一个完整项目
前端
码不停蹄Zzz34 分钟前
C语言【结构体值传递问题】
c语言·开发语言
AMoon丶36 分钟前
Golang--多种数据结构详解
linux·c语言·开发语言·数据结构·c++·后端·golang
90后的晨仔38 分钟前
S C:\WINDOWS\system32> pnpm i -g openclaw@latest pnpm : 无法加载文件 C:\xx\A
前端
wearegogog12339 分钟前
C# Modbus 协议实现
开发语言·c#
紫郢剑侠1 小时前
【C语言编程gcc@Kylin | 麒麟 】5:获取系统启动时间
c语言·开发语言·kylin·gcc·麒麟操作系统
颜酱1 小时前
最小生成树(MST)核心原理 + Kruskal & Prim 算法
javascript·后端·算法