查找数据中相同的id并赋值一个相同的值,不同的累加

后台给的数据中有相同的一个id,需要通过判断来查找相同的id给所有相同添加一个属性比如 index:1,当第二个相同的数据添加 index:2,以此类推

// 这是后台返回的数据
let arr  = [
    {
        objectId:"1", // 共同的id 
        loacalId:"34243", // 自身的id
        name:"第一条数据" 
     },
     {
        objectId:"1", 
        loacalId:"34244", 
        name:"第二条数据" 
     },
     {
        objectId:"1", 
        loacalId:"34245", 
        name:"第三条数据" 
     },
     {
        objectId:"2", 
        loacalId:"453324", 
        name:"第四条数据" 
     },
     {
        objectId:"2", 
        loacalId:"453325", 
        name:"第五条数据" 
     }

]
//  我们想要的数据, z注意看num 当第一个相同的objectId,num是1,当另一组objectId相同时num变成了2,以此来类推
let arr  = [
    {
        objectId:"1", // 共同的id 
        loacalId:"34243", // 自身的id
        name:"第一条数据",
        num:1,  
     },
     {
        objectId:"1", 
        loacalId:"34244", 
        name:"第二条数据",
        num:1,  
     },
     {
        objectId:"1", 
        loacalId:"34245", 
        name:"第三条数据",
        num:1,  
     },
     {
        objectId:"2", 
        loacalId:"453324", 
        name:"第四条数据",
        num:2,  
     },
     {
        objectId:"2", 
        loacalId:"453325", 
        name:"第五条数据",
        num:2,  
     }

]

首先第一步:我们需要把数据进行整理把所有相同id的放到一起,这样页面渲染上相同规整到一起,而且如果是表格还方便做合并

 abilitySort(arr, property) {   
   let res = [];
      for (let k = 0; k < arr.length; k++) {
        let map = arr[k][property];
        for (let i = 0; i < arr.length; i++) {
          if (map == arr[i][property]) {
            res.push(arr[i])
          }
        }
      }
       // 去重
      res = [...new Set(res)]
}
this.abilitySort(list, 'objectId') // 第一个参数是数据,第二个参数是用来判断的id

第二步:通过相同的id给每个数据添加我们需要的

datePushName(res){ 
      let newRes = JSON.parse(JSON.stringify(res))
      let tempArr = []
      let Data = []
      for (let i = 0; i < newRes.length; i++) {
            // this.filedName 是很多地方要用到数据中的id来判断处理数据
        if (tempArr.indexOf(newRes[i][this.filedName]) === -1) {
          Data.push({
            fatherId: newRes[i][this.filedName],
            child: [newRes[i]]
          })
          tempArr.push(newRes[i][this.filedName])
        } else {
          for (let j = 0; j < Data.length; j++) {
            if (Data[j][this.filedName] == newRes[i][this.filedName]) {
              Data[j].child.push(newRes[i])
              break;
            }
          }
        }
      }
      res.forEach(item => {
        Data.forEach((val, ind) => {
          if (item[property] == val.fatherId) {
            item['num'] = ind + 1
          }
        })
      })
      return res;
}
this.datePushName(list) // 参数是数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值