数组对象删除后修改id使之与index相对应

73 阅读1分钟
fccc(){
      let arr = [
        {
          id: 1,
          name: '查娜',
          age: 20
        },
        {
          id: 2,
          name: '查娜',
          age: 20
        },
        {
          id: 2,
          name: '查娜',
          age: 20
        },
        {
          id: 3,
          name: '查娜',
          age: 20
        },
        {
          id: 3,
          name: '查娜',
          age: 20
        },
        {
          id: 3,
          name: '查娜',
          age: 20
        },
        {
          id: 4,
          name: '查娜',
          age: 20
        },
        {
          id: 4,
          name: '查娜',
          age: 20
        },
      ]

      let arr1 = arr.filter(item => {return item.id != 2})
     
     //整体思路,将相同的合并成一个数组,组成一个二维数组,利用二维数组的index去修改id变量,达到删除递增的效果
      let arr2 = []//二维数组合集
      let marr = []
      let index = arr1[0].id
      arr1.forEach(el => {
        if(el.id === index){
          marr.push(el)
        }else{
          arr2.push(marr)
          marr = []
          marr.push(el)
          index = el.id
        }
      })
      //还剩最后一组没有push进去,所以在这加了个push
      arr2.push(marr)
      arr2.forEach((el,index) => {
        el.forEach(e => {
          e.id = index + 1
        })
      })
      let arr3 = []
      arr3 = arr3.concat(...arr2)//利用concat合并二维数组,还原
      console.log(arr3)
    },