这个问题其实是业务里的一个需求,先附上ui的设计图和后台返回的数据,积分记录
在这里插入图片描述

我前段样式是每个月份进行遍历,然后在遍历月份里面的每个数据。而后端返回的是一条条的数据(需要我们按照相同月份的数据合并成一个对象):1,截取全部数据的年份和月份:在这里插入图片描述
2.去重 用到indexOf()方法,有则返回对应的索引,没有则-1:
在这里插入图片描述
3.创建数据方便赋值:在这里插入图片描述
4:赋值
在这里插入图片描述
全部代码:

jfList (arr) {
      var array = []
      arr.forEach((item,index) => {
        item.creationTime = item.creationTime.substr(0,10)
        //获取全部截取日期到月份的数据
        array.push(item.creationTime.substr(0,7))
      });
      console.log('获取全部截取月份数据',array)
      //去重
      var hash=[];
      for (var i = 0; i < array.length; i++) {
        if(hash.indexOf(array[i])==-1){
          hash.push(array[i]);
        }
      }
      console.log('去重结果',hash)
      let jlList = []
      hash.forEach((item,index) =>{
        jlList[index] = {children:[],mon:'',year:''}
      })
      for (var i = 0; i < arr.length; i++) {
         if(hash.indexOf(arr[i].creationTime.substr(0,7))!=-1) {
            let index = hash.indexOf(arr[i].creationTime.substr(0,7))
            console.log(index)
            // this.$set(jlList[index],'mon',arr[i].creationTime.substr(5,2))
            // this.$set(jlList[index],'year',arr[i].creationTime.substr(0,4))
            jlList[index].mon = arr[i].creationTime.substr(5,2)
            jlList[index].year = arr[i].creationTime.substr(0,4)
            jlList[index].children.push(arr[i])
            // this.$set(jlList[index],'children', jlList[index].children)
         }
      }
      console.log('最终结果',jlList)
      this.jf = jlList
    },
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐