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;
   }, {});
};
相关推荐
想做后端的前端几秒前
Lua的热更新
开发语言·lua
隐退山林13 分钟前
JavaEE初阶:多线程进阶
java·开发语言
lead520lyq14 分钟前
Golang Protoc Grpc实现微服务通信
开发语言·微服务·golang
BHXDML15 分钟前
Python:(一)变量、类型与 f-string —— 数据的载体
开发语言·python
利刃大大18 分钟前
【Vue】props完整语法 && 非父子组件通信 && provide && inject && eventBus
前端·javascript·vue.js
萧曵 丶22 分钟前
前端工程化项目中全类型配置文件的详细解析
前端·javascript·配置文件·工程化
学嵌入式的小杨同学26 分钟前
【Linux 实战】Makefile 自动化构建进阶:静态库 / 动态库通用模板(一键编译 + 系统安装)
linux·开发语言·git·vscode·spring·vim·ux
小孟的CDN27 分钟前
一维热传导方程的PINN求解——损失函数实时绘制
开发语言·python
讯方洋哥28 分钟前
HarmonyOS App开发——鸿蒙公共事件App开发
服务器·前端·javascript
透明的玻璃杯30 分钟前
VS2015+QT5程序发布
开发语言·qt