小程序對現有數據進行分組


    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
            },

 

 

 

個人筆記,不當之處歡迎指正,轉載請注明出處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM