javascript - 删除Array中一个元素,并且不作多余的遍历
怪我咯
怪我咯 2017-04-11 09:04:53
[JavaScript讨论组]
            try{
                //是否跳出循环
                let breakloop = false;
                this.commitList = this.commitList.filter((arg)=>{
                    
                    //是否跳出循环
                    if(breakloop)
                        throw new error("break");
                        
                    //如果找到要删除的元素 
                    if(arg == check.id)
                        //设为true 则下一次Loop会抛出异常
                        breakloop = true;
                        
                    //找到元素 会返回false,在filter遍历中返回false会'删除'该元素
                    return arg != check.id 
                })
            }catch(e){
                console.log(e.message)
            }

commitList是一个Array ,
假设
commitList[1,2,3,4,5,6]
check.id = 1

希望在找个1之后就不再进行下面的遍历,但是filter遍历不允许使用break字段

解决方法:

找到要删除的元素之后,抛出异常,强行跳出遍历

遇到问题:

跳出遍历后,数组还是维持不变(没有删除应该删除的元素),
可能是强行跳出打断了filter的工作?

请问有更好的方法吗? 既可以删除元素,又不需要全数组遍历..

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
PHP中文网

为什么不用

Array.prototype.some()

https://developer.mozilla.org...

let commitList = [1,2,3,4,5,6] 

commitList.some(function(item, index) {
    if (item === 1) {
        commitList.splice(index, 1)
        return true
    }
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号