鍍金池/ 問(wèn)答/HTML/ JS刪除數(shù)組對(duì)應(yīng)多個(gè)索引值方法

JS刪除數(shù)組對(duì)應(yīng)多個(gè)索引值方法

圖片描述

    deletTr(){
      let arrLen = this.arrangeP.length;
      for(let i=0;i<arrLen;i++){
        if(this.arrangeP[i].checked){
          this.arrangeP.splice(i,1)
        }else{
          console.log('err')
        } 
      }
    }

現(xiàn)在代碼大概意思是拿到this.arrangeP[i].checked為true的,也就是選中的,然后刪一條,但是splice刪完第一條后,整體數(shù)組長(zhǎng)度就變了,后面便利刪除就有問(wèn)題了,有沒(méi)有好辦法呢。

回答
編輯回答
悶騷型

兩種方案:

方案1.先把對(duì)應(yīng)項(xiàng)重新賦值為undefined,然后使用數(shù)組的filter方法篩序掉該項(xiàng)等于undefined的值,獲得一個(gè)新數(shù)組;
方案2.倒著遍歷數(shù)組,即從數(shù)組最后一項(xiàng)向第一項(xiàng)遍歷,進(jìn)行splice操作
2017年9月23日 14:20
編輯回答
黑與白

你找到對(duì)應(yīng)的id再刪,而不是根據(jù)index刪不就解決了,
或者從后刪起,不是從前面刪起也能解決這個(gè)問(wèn)題
最好是用map循環(huán),現(xiàn)在基本都不用for這些去循壞數(shù)組了

2018年1月4日 11:40
編輯回答
愿如初

反著刪? let i=arrLen-1;....

2017年2月8日 08:06
編輯回答
吢丕

用filter過(guò)濾

this.arrangeP = this.arrangeP.filter(item => item.checked != true)
2017年4月22日 09:12
編輯回答
女流氓
deletTr(){
      for(let i=0;i<this.arrangeP.length;i++){
        if(this.arrangeP[i].checked){
          this.arrangeP.splice(i,1);
          i--;
        }else{
          console.log('err')
        } 
      }
    }

只有當(dāng)數(shù)組遍歷內(nèi)操作對(duì)數(shù)組長(zhǎng)度無(wú)影響時(shí)才做let arrLen = this.arrangeP.length;吧,不要什么情況都用~

2017年2月18日 06:24
編輯回答
薄荷綠
deletTr(){
      let arrLen = this.arrangeP.length;
      for(let i=0;i<arrLen;i++){
        if(this.arrangeP[i].checked){
          this.arrangeP.splice(i,1)
          i--
        }else{
          console.log('err')
        } 
      }
    }
2017年12月28日 12:01
編輯回答
故林
this.arrageP = this.arrangeP.filter(item => {
    return !item.checked
})
2017年8月3日 07:33