JavaScript 数组 剔除指定元素

在Lodash中,有 .without 用于遍历数组,删除掉指定元素。
例如:
.without([1, 2, 3, 3, 3], 3) => [1, 2]
那么不使用Lodash使用JavaScript的元素方式能否实现呢?
首先,我使用了splice:

    _removeArray(array, id) {
        array.forEach((a,i) => {
            if (a === id)
                array.splice(i, 1);
        });
    }

    _removeArray([1, 2, 3, 3, 3], 3)  =>  [1, 2, 3]

结果发现出问题了。。
由于spalice是实时修改数组的,这就导致使用循环会跳过下一个元素而无法彻底删除掉所有指定元素。

而后,我对其进行了修改。最终效果如下:

    _removeArray(array, id) {
        while (true) {
            let indexFlag = false;
            for (let i = 0; i < array.length; i++) {
                if (array[i] === id) {
                    indexFlag = true;
                    array.splice(i, 1);
                    break;
                }
            }
            if (!indexFlag) break;
        }
    }

    _removeArray([1, 2, 3, 3, 3], 3)  =>  [1, 2]
    原文作者:Natrue
    原文地址: https://www.jianshu.com/p/529abd2d8fa0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞