前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js 数组封装方法实现类似sql的groupBy分组求和。

js 数组封装方法实现类似sql的groupBy分组求和。

作者头像
易兒善
发布2019-02-22 15:10:49
3.6K0
发布2019-02-22 15:10:49
举报
文章被收录于专栏:挖坑填坑

分组求和

代码语言:javascript
复制
      function GroupBy(datas,keys,callBack) {
          const list = datas || [];
          const groups = [];
          list.forEach(v => {
              const key = {};
              const data = {};
              keys.forEach(k => {
                  key[k] = v[k];
              });
              let group = groups.find(v => {
                  return v._key === JSON.stringify(key);
              });
              if (!group) {
                  group = {
                      _key:JSON.stringify(key),
                      key: key,
                  };
                  groups.push(group);
              }
              if(callBack){
                  group.data = callBack(group.data,v);
                  group.total=group.total||0;
                  group.total++;
              }else {
                  group.data=group.data||[];
                  group.data.push(v);
              }
          });
          return groups;
      }

测试函数

代码语言:javascript
复制
        window.onload=function () {
            const data = [
                {key:1,key2:1,v:123},
                {key:1,key2:1,v:55},
                {key:2,key2:1,v:85},
                {key:1,key2:2,v:15},
                {key:2,key2:1,v:99}
            ];
            var d = GroupBy(data,['key','key2'],(d,v)=> {
                d = d||0;
                return d+=v.v;
            });
            console.log(d);
            var a = GroupBy(data,['key','key2']);
            console.log(a);
        };

效果图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.01.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分组求和
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档