數組循環刪除數據時,splice使用注意


當在循環數組中,刪掉某個元素的時候,不要使用splice方法。

因為splice會使原數組發生變化,而此時數組還處在循環中,所以會出現問題。

例子:

有個數組  formData ,需求:刪除formData的itemList中,queId === ‘001’的一項。

我最開始使用的是splice方法,但是報錯了:

for(let i = 0; i < this.formData.itemList.length; i++) {
    let item = this.formData.itemList[i]
    if (item.queId === '001') {
        this.formData.itemList.splice(i, 1)
     }
 }

遇到有需要循環數組來刪除數組數據的情況,這樣做:

let formArr = []
for(let i = 0; i < this.formData.itemList.length; i++) {
    let item = this.formData.itemList[i]
    if (item.queId !== '001') {
        formArr .push({...item})
     }
 }
最后得到的formArr 就是刪掉那個數據的數組

解釋 formArr.push({...item}) 
這里是{...item}的意思是將item復制了一份,傳給formArr,因為之后formArr可能會對item有所操作,如果是直接push item的話,跟之前的item的引用地址是一樣的,可能會出現問題。嗯。
注意,這個復制是item只有一層的時候。如果不止一層,需要用cloneDeep


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM