JavaScript中的.forEach()如何跳出循环

Hello!大家好,这里还是万物之恋。今天给大家带来的依旧是一道前端方面的面试题。题目是:在js中使用.forEach()方法进行遍历时,如何在需要的时机跳出循环?
说到跳出,无非就是三种,break,continue和return false。

let array = [0, 1, 2, 3, 4, 5];

	for (let i = 0; i < array.length; i++) {
		if (i === 2) {
			break;
		}
		console.log(array[i]);
	}

	console.log("----------------")

	for (let i = 0; i < array.length; i++) {
		if (i === 2) {
			continue;
		}
		console.log(array[i]);
	}

两次简单的遍历,使用break和continue,同样让它们在i=2的时候跳出循环,结果如下:
break
我们所需要的效果,就是和break一样,只输出规定数据之前的所有数据。
我们再使用forEach去进行遍历:

array.forEach((item) => {
		if (item === 2) {
			// break;
			// continue;
			// return false;
		}
		 console.log(item);
});

使用三种方式后得到的结果:

  1. break

fb

  1. continue

fc

  1. return false
    fr
    只有return false得到了continue的效果,但依旧达不到需求。这里估计有小伙伴会问了,为什么使用break和continue会报错呢?那么在这里我们需要引入下forEach的概念。

forEach的概念

  1. forEach是函数,而不是例如if,for之类的语句
  2. forEach的参数是一个匿名函数,是一个callback
  3. 每次执行forEach实际上操作的是一个函数

同时还需要了解forEach的执行机制:

是对数组的每个有效元素执行一次callback函数

因此使用在语句中的break,continue无法使用。return false也只是单纯的阻止了一次操作,无法真正跳出循环。

而这个时候,我们就可以使用try…catch抛出异常的方式,在需要的时机来跳出循环,同时还可以捕获到发生异常的时机。

	let k = null;
	try {
		array.forEach((item) => {
			if (item === 2) {
				k = item;
				// 定义变量接收,查看它是否是在规定的时机进行了跳出
				throw Error();
			}
			console.log(item);
		})
	} catch (error) {
		// 由于没有错误需要抛出,所以catch里面不用写东西
	}
	console.log("抛出的时机:"+k);

得到结果:
抛出
这样就达到了我们需要的效果。是不是非常简单呢?当然,这只是其中一种方式,剩下的还是要靠各位自己去探索。
这里是万物之恋,我们下次再见了!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值