鍍金池/ 問答/HTML/ vue中遍歷數(shù)組對象,按條件判斷,然后刪除對象,出錯(cuò),為什么?

vue中遍歷數(shù)組對象,按條件判斷,然后刪除對象,出錯(cuò),為什么?

問題描述

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

之前if里面 沒有寫 i=i-1 第二次循環(huán)后會出現(xiàn)刪除提示錯(cuò)誤就斷出來 不再運(yùn)行
寫了i=i-1之后雖然報(bào)錯(cuò) 但是可以繼續(xù)運(yùn)行

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

          var p=this.propertylistIn.length
                var pt = this.propertylistIn
                
                for (var i =0 ; i<p;i++){

                    if(pt[i].pkPropertyOwnerId==w){
                        pt.splice(i,1)
                        i=i-1
                       
                    }
                }
                this.propertylistIn=pt

clipboard.png

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

這個(gè)錯(cuò)誤怎么解決

回答
編輯回答
命于你

splice會改變原數(shù)組的的長度啊,所以會出現(xiàn)pt[i]是undefined的,可以用filter,或者這樣:

for (var i =0 ; i<this.propertylistIn.length;i++){
    if(pt[i].pkPropertyOwnerId==w){
        pt.splice(i,1)
        i=i-1
    }
}
2018年9月17日 06:14
編輯回答
雅痞

你是想取出數(shù)組中屬性pkPropertyOwnerId不等于w的每一項(xiàng),那就應(yīng)該用filter返回一個(gè)新數(shù)組,而不應(yīng)該反復(fù)操作當(dāng)前數(shù)組。

var pt = this.propertylistIn;
// newPt就是你需要的新數(shù)組
var newPt = pt.filter(function (item) {
    return item.pkPropertyOwnerId !== w;
})

相關(guān)文檔:http://www.runoob.com/jsref/j...

2018年7月29日 21:55
編輯回答
胭脂淚

應(yīng)該是 p = p-1,但是你這樣會造成相鄰的pkPropertyOwnerId==w時(shí)無法刪除,可以pt[i].pkPropertyOwnerId !==w push新Array

2017年1月23日 04:52
編輯回答
孤毒

這個(gè)報(bào)錯(cuò)是指 pt[i] 并沒有 pkPropertyOwnerId 屬性

2018年7月3日 18:57