javascript - 删除Array中一个元素,并且不作多余的遍历

查看:112
本文介绍了javascript - 删除Array中一个元素,并且不作多余的遍历的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

            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的工作?

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

解决方案

为什么不用

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
    }
})

这篇关于javascript - 删除Array中一个元素,并且不作多余的遍历的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆