[微信小程序]将离散的后台数据聚合

将离散的后台数据聚合

当后台传入离散的数据时,如何使这些分散的数据按需求聚合在一起循环输出,可以采用以下办法:
需求:将传入的离散数据按照时间聚合后,按照早、午、晚、加餐再度聚合后输出
方法:将数据循环遍历,按日期分组存放,在数组内继续分组存放餐的种类,最后以多层数组嵌套形式存放

示例代码:

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);
        }
      })
  }

你可能感兴趣的:(微信小程序,数据处理,数据处理)