小程序对现有数据进行分组

    var datalist = [{
      "name": '张三',
      "type": 1
    }, {
      "name": '张五',
      "type": 1
    }, {
      "name": '张六',
      "type": 2
    }, {
      "name": '张七',
      "type": 5
    }, {
      "name": '张八',
      "type": 0
    }]
  
   var resList =this.groupByList(datalist);
    //如果中间有相差的,则强制建数据
    console.log(resList);
    console.log(resList[0]);
    console.log(resList[3]);
    

调用的函数

  //根据某个数字类型的字段对数组分组
  groupByList(datalist){
    let resList = [];//分组结果
    for (var i = 0; i < datalist.length; i++) {
      var thisindex = parseInt(datalist[i].type);//分组的索引 
      if (resList[thisindex] != undefined) {//如果数组中有值,则添加第二条数据
        resList[thisindex] = resList[thisindex].concat(datalist[i]);
      } else {//新建数组
        resList[thisindex] = [];
        resList[thisindex][0] = datalist[i];
      }
    }
    return resList
  },

这个方法只能对数组类型的字段进行分组,对于文字暂时没考虑,可以根据需要自行调整

思路是:先循环数组,然后第一次添加的数组加入值,然后第二次再次分入这个组里,进行插入的,最后取值

    这个操作类似于分页,只不过分页是直接相加,这个把数据过滤了然后再填入

其他:

如果对英文首字母排序

var datalist = [{
                    "name": '张三',
                    "ename": "A"
                }, {
                    "name": '张五',
                    "ename": "A"
                }, {
                    "name": '张六',
                    "ename": "B"
                }, {
                    "name": '张七',
                    "ename": "B"
                }, {
                    "name": '张八',
                    "ename": "Q"
                }]

                var resList = this.groupByList(datalist);
                //如果中间有相差的,则强制建数据
                console.log(resList); 



        //根据某个数字类型的字段对数组分组
            groupByList(datalist) {
                let resList = []; //分组结果
                let resIndex = -1;
                let lasetName = "";
                for (var i = 0; i < datalist.length; i++) {
                    var ename = datalist[i].ename; //分组的索引
                    console.log(ename,lasetName)
                    if (lasetName == ename) { //如果数组中有值,则添加第二条数据
                        resList[resIndex] = resList[resIndex].concat(datalist[i]);
                    } else {
                        //新建数组
                        resIndex++; 
                        lasetName = ename;
                        resList[resIndex] = []; 
                        resList[resIndex][0] = datalist[i];
                    }
                }
                return resList
            },

个人笔记,不当之处欢迎指正,转载请注明出处

原文地址:https://www.cnblogs.com/hkzw/p/13598260.html