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;
   }, {});
};
相关推荐
Cache技术分享几秒前
266. Java 集合 - ArrayList vs LinkedList 内存使用深度剖析
前端·后端
曹牧几秒前
Java:Jackson库序列化对象
java·开发语言·python
豆苗学前端5 分钟前
彻底讲透浏览器的事件循环,吊打面试官
前端·javascript·面试
来自上海的这位朋友6 分钟前
从零打造一个无依赖的Canvas图片编辑器
javascript·vue.js·canvas
MediaTea10 分钟前
Python:依赖倒置原则(DIP)
开发语言·python·依赖倒置原则
OpenTiny社区17 分钟前
揭秘!TinyEngine低代码源码如何玩转双向转换?
前端·vue.js·低代码
用户81686947472517 分钟前
beginWork 与 completeWork 的内部职责分工
前端·react.js
3秒一个大20 分钟前
从后端模板到响应式驱动:界面开发的演进之路
前端·后端
三喵22322 分钟前
跨域 iframe 内嵌的同源策略适配方案-Youtube举例
前端·爬虫
灰灰勇闯IT23 分钟前
RN跨端适配与沉浸式体验:适配不同设备与系统
javascript·react native·react.js