[微信小程序]將離散的後臺數據聚合

將離散的後臺數據聚合

當後臺傳入離散的數據時,如何使這些分散的數據按需求聚合在一起循環輸出,可以採用以下辦法:
需求:將傳入的離散數據按照時間聚合後,按照早、午、晚、加餐再度聚合後輸出
方法:將數據循環遍歷,按日期分組存放,在數組內繼續分組存放餐的種類,最後以多層數組嵌套形式存放

示例代碼:

var me = this;
    var date = utils.formatDate(new Date(), "y-m-d");
    var earlyDate = utils.getDateMiusDay(30);
    var recordList = [];
    solutionApi.getFoodRecords({
        start_date: earlyDate,
        end_date: date
      }, {
        showLoading: true
      })
      .then(res => {
        if (res.data.length > 0) {
          var p1 = res.data[0];
          //取第一個數組值
          var l = [[],[],[],[]];
          //建一個二維數組,用於存放修改後的數據
          res.data.map(per => {
          //使用map函數遍歷返回數組
            var d1 = utils.formatDate(new Date(p1.recordTime.replace(/-/g, '/')), 'y.m.d');
            var d2 = utils.formatDate(new Date(per.recordTime.replace(/-/g, '/')), 'y.m.d');
            per['formatDate'] = d2;
            per['formatTime'] = utils.formatDate(new Date(per.recordTime.replace(/-/g, '/')), 'h:m');
            if (d1 == d2) {
            //比較選取的對象時間值和下一個對象時間值比較,如果相同,則將這
            //個對象加入到此對象的數組中,如果不同,則重新創建一個數組,將不
            //同的這個對象放入新數組,繼續向後比較,放入數組的過程中按餐的
            //種類將其再分類放入不同數組
              switch (per.mealType) {
                case 0:
                  l[0].push(per)
                  break;
                case 1:
                  l[1].push(per)
                  break;
                case 2:
                  l[2].push(per)
                  break;
                case 3:
                  l[3].push(per)
                  break;
                default:
                  break;
              }
            } else {
              recordList.push(l);
              l = [[],[],[],[]];
              switch (per.mealType) {
                case 0:
                  l[0].push(per)
                  break;
                case 1:
                  l[1].push(per)
                  break;
                case 2:
                  l[2].push(per)
                  break;
                case 3:
                  l[3].push(per)
                  break;
                default:
                  break;
              }
            }
            p1 = per;
          })
          recordList.push(l);
          me.recordList = recordList;
          me.$apply();
          //將分類好的數組綁定,即可進行循環渲染
          console.log('recordList====>', recordList);
        }
      })
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章