vue 一个数组里取相同或满足相同条件的对象,并合并成新的数组

这个问题其实是业务里的一个需求,先附上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
    },
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值