数组中遍历方法以及跳出循环方法

先看下面这段代码:

在for循环中想要调出整个循环是break;但是在forEach中使用break不仅不能调出整个循环,还会报错,使用return也不行;

其实这个问题是由一道编程题引发的,使用循环判断数组中是否包含某个值;当我想用forEach来循环时,发现在找到该值之后没法提前调出循环,就会造成时间复杂度的浪费,增加冗余计算,除了用for循环语句来代替forEach,还有什么解决方法呢,forEach究竟怎么跳出循环。

1、使用try...catch来调出循环

当判断条件满足时,抛出异常,编码如下:

try{
    let list = [1, 2, 3, 4, 5];
    list.forEach(el => {
        console.log(el);
        if(el ==3 ) {
            throw new Error('finish');
        }
    })
}catch(e) {
    if(e.message == 'finish') {
        console.log('All finish!');
    }else {
        console.log(e.message);     
    }
}


实际执行结果如下:

下面就继续看一下其他几个循环方法:

2、every()使用return false 跳出循环(需要配合return true使用)

语法糖:every()返回一个boolean,判断每个元素是否符合func条件。数组里面所有的元素都符合才返回true。

具体代码如下:

let func = () => {
    let list = [1, 2, 3, 4, 5];
    list.every(el => {
        if(el == 3) {
            console.log(el);
            return false;
        }else {
            console.log(el);
            return true;
        }
    })
}
func();


执行结果如图:

3、some()使用return true跳出循环

语法糖:some()返回一个boolean,判断是否有元素是否符合func条件。数组里面所有的元素有一个符合条件就返回true。

具体代码如下:

let func = () => {
    let list = [1, 2, 3, 4, 5];
    list.some(el => {
        console.log(el);
        if(el == 3) {
            return true;
        }
    })
}
func();


执行结果如图:

4、map()

语法糖:map()返回一个新的Array,每个元素为调用func的结果。新数组的长度和原来的是一样的,他只不过是逐一对原来数据里的每个元素进行操作。

map相对来说比较特殊,先看代码执行结果:

使用return true:

使用return false:

使用break:

由以上结果可以看出:map 有返回值,返回一个新的数组,每个元素为调用func的结果。不能终止循环,使用 break 会报错,使用 return false;, 输出结果中会有 false,循环不会终止。

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值