在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ JS刪除數(shù)組對應多個索引值方法

JS刪除數(shù)組對應多個索引值方法

圖片描述

    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ù)組長度就變了,后面便利刪除就有問題了,有沒有好辦法呢。

回答
編輯回答
悶騷型

兩種方案:

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

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

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

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

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

用filter過濾

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')
        } 
      }
    }

只有當數(shù)組遍歷內操作對數(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