把对象数组按照某一个属性(或某几个属性)进行分类

//把对象数据按照某一个属性进行分类
function sort_pro(data, keys = []) {     //keys可以传一个数组
      var c = [];
      var d = {};
      for (var element of data) {
        let element_keyStr = "";
        let element_key = [];
        let element_keyObj = {};
        for (var key of keys) {
          element_key.push(element[key]);
          element_keyObj[key] = element[key];
        }
        element_keyStr = element_key.join("_");
        if (!d[element_keyStr]) {
          c.push({
            ...element_keyObj,
            children: [element]
          });
          d[element_keyStr] = element;
        } else {
          for (var ele of c) {
            let isTrue = keys.some(key => {
              return ele[key] != element[key];
            });
            if (!isTrue) {
              ele.children.push(element);
            }
          }
        }
      }
      return c;
    }

  



  var data = [
  {name:'张三',score:56},
  {name:'张三',score:70},
  {name:'李四',score:100}
  ]

  sort_pro(data ,['name'])       

结果:

 




  

posted @ 2019-07-27 16:45  neo_o  阅读(3204)  评论(0编辑  收藏  举报

愿你的生活只有诗和远方