美文网首页Cocos Creator
JavaScript 数组 剔除指定元素

JavaScript 数组 剔除指定元素

作者: 897dc7b51c3c | 来源:发表于2018-09-01 10:39 被阅读6次

    在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]
    

    相关文章

      网友评论

        本文标题:JavaScript 数组 剔除指定元素

        本文链接:https://www.haomeiwen.com/subject/brvywftx.html