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;
   }, {});
};
相关推荐
Slice_cy14 分钟前
Mint 自研框架设计与实现:从重复开发走向配置驱动(二)
前端·后端·架构
greenbbLV16 分钟前
积分兑换商城供应商挑选:避坑要点与靠谱选择解析
前端·小程序
醉城夜风~18 分钟前
C++模板详解:从基础到高级全面解析
java·开发语言·c++
张元清25 分钟前
React useDropZone Hook:搭建一个文件拖放区(2026)
javascript·react.js
地球驾驶员25 分钟前
NX二次开发C#-获取体的外表面
开发语言·c#
a11177632 分钟前
3D 建筑编辑器 Pascal Editor THreeJS 开源
前端·3d·html
jason_yang35 分钟前
写给女儿的英语App
前端·人工智能
誰能久伴不乏41 分钟前
深入理解 C++ 多态:对象模型与底层机制解析
开发语言·c++·架构
思码梁田42 分钟前
CSS 定位详解:从相对到固定,掌握网页布局的核心
前端·javascript·css
Wang's Blog44 分钟前
Go-Zero项目开发30: 微服务配置中心的设计与实现
开发语言·微服务·golang·go-zero