DEV Community

Cover image for JS 移除陣列元素錯誤案例 | 用forEach搭配splice
周柏諭 BO-YU CHOU
周柏諭 BO-YU CHOU

Posted on

JS 移除陣列元素錯誤案例 | 用forEach搭配splice

情況

移除不符合條件的陣列元素,例如移除’e’的元素

let list = ['a', 'b', 'c', 'e']

list.forEach((item, index, arr) => {
    if(item === 'e') {
        arr.splice(index, 1)
    }
})
Enter fullscreen mode Exit fullscreen mode

(splice方法第一個參數是欲刪除元素的位置,第二個是欲刪除幾個元素)

錯誤原因

使用map或forEach等迴圈相關的方法時,不要在迴圈內移除或增加陣列長度,否則陣列的指向會錯誤。

解決方法

應使用filter()篩選符合的元素

let list = ['a', 'b', 'c', 'e']

let filterList = list.filter(item => {
    return item !== 'e'
})
Enter fullscreen mode Exit fullscreen mode

Top comments (0)