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;
   }, {});
};
相关推荐
名字还没想好☜10 分钟前
Go slice 的 append 陷阱:共享底层数组导致的数据串改
开发语言·后端·golang·go·slice
bitbrowser13 分钟前
Claude 账号频繁被封?转向国内可直接使用的 AI 工具
开发语言·php
只会cv的前端攻城狮17 分钟前
动态组件架构设计:从配置到事件驱动全链路解析
前端·vue.js
飞天狗19 分钟前
Next.js 16 App Router 实战:服务端组件与流式渲染
前端·next.js
OpenTiny社区23 分钟前
TinyEngine 2.11版本发布:AI 进一步融入画布,Vue 工程可一键转DSL
前端·vue.js·github
An_s28 分钟前
机器学习python之识别图中物品信息
java·linux·开发语言
小雪_Snow38 分钟前
JavaScript 中的三种常用事件
开发语言·前端·javascript
Hyyy41 分钟前
Electron-Vite是什么,和Vite有什么区别
前端·面试
肖爱Kun42 分钟前
C++设计策略模式
开发语言·c++·策略模式
蓝胖子酱1 小时前
在 Electron 中用 electron-store 实现加密存储与自定义格式文件
前端·javascript·数据库