zoukankan      html  css  js  c++  java
  • 对象数组去重

    有时候会需要对一些复杂的数据根据某个维度来进行整理,下面是我自己觉得还算比较好用的方法

    // 以下一串数据,希望以ean为维度进行整合,相同的qty相加
    const skuList = [
              {  ean: '0001', qty: 5},
              {  ean: '0001', qty: 4},
              {  ean: '0003', qty: 1},
              {  ean: '0002', qty: 2},
              {  ean: '0003', qty: 3}
           ] 
    
    // 去重
    function groupBy(array,f) {
              const groups = {};
              array.forEach(function(o){
                const group = JSON.stringify(f(o));
                groups[group] = groups[group] || [];
                groups[group].push(o);
              })
              return Object.keys(groups).map(function(group){
                return groups[group];
              } )
          }
    
    // 统计数量
    const result = groupBy(skuList,function(arr) {
        return arr.ean
    }).map(item => {
        return {...item[0],qty: item.reduce((p,c) => {return p+ c.qty},0)}
    })
    
    // 最后的结果
    [
        {  ean: '0001', qty: 9},
        {  ean: '0003', qty: 4},
        {  ean: '0002', qty: 2}
    ] 
     
  • 相关阅读:
    Git的使用
    Flask(五)
    Flask(四)
    Flask(二)
    Flask(一)
    SDL 五子棋游戏
    c++单例模式
    ubuntu安装虚拟机
    git 命令
    汇编x86入门
  • 原文地址:https://www.cnblogs.com/z-lin/p/13437216.html
Copyright © 2011-2022 走看看