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

本文介绍了一种将离散后台数据按时间及餐次类型聚合的方法,通过循环遍历和多层分组,实现了早、午、晚、加餐数据的有效整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将离散的后台数据聚合

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

示例代码:

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);
        }
      })
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值