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;
   }, {});
};
相关推荐
凡人叶枫2 分钟前
Effective C++ 条款05:了解 C++ 默默编写并调用哪些函数
java·linux·开发语言·c++·effective c++·编程范式
少司府5 分钟前
C++进阶:AVL树
开发语言·数据结构·c++·二叉树·avl树
wgc2k7 分钟前
NestJS基础-7: 官方 CLI 完整使用指南
前端
某风吾起11 分钟前
C语言总结
c语言·开发语言
winlife_12 分钟前
全程用 AI 做一款商业级手游 · EP7 表现层与手感:从“能跑“到“摸起来爽“
java·开发语言·人工智能·unity·ai编程·游戏开发·mcp
千纸鹤の脉搏12 分钟前
多线程的初步使用
java·开发语言·学习·多线程
专注VB编程开发20年14 分钟前
阿里通义灵码插件安装失败
开发语言·ide·c#·visual studio
AI_零食16 分钟前
HarmonyOS-鸿蒙原生 ArkTS 布局系统:width(‘100%‘) 的本质与 padding 陷阱
前端·学习·华为·harmonyos·鸿蒙
英俊潇洒美少年19 分钟前
React18 flushSync 完整深度解析
前端·react
小鱼程序员23 分钟前
Reqable关于路径定位
前端