forEach 中跳过本次循环和终止循环
博客专区 > dkvirus 的博客 > 博客详情
forEach 中跳过本次循环和终止循环
dkvirus 发表于6个月前
forEach 中跳过本次循环和终止循环
  • 发表于 6个月前
  • 阅读 39
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

使用 forEach 方法来遍历数组是最常使用的一种方式,但在实际开发中通常通过会有跳过本次循环和终止循环的情形,首先想到的应该是使用 continue 和 break 关键字,但无奈这两个关键字在 forEach 中都无法使用(写了会报错错误语法),此时就该寻找其它解决方法。

1. forEach 中跳过本次循环

const arr = [1, 2, 3, 4, 5];

arr.forEach(function (item) {
	console.log(item);
});
// result:
// 1
// 2
// 3
// 4
// 5

使用 return 语句实现 continue 关键字效果。

const arr = [1, 2, 3, 4, 5];

arr.forEach(function (item) {
	if (item === 3) {
		return;
	}
	console.log(item);
});
// result:
// 1
// 2
// 4
// 5

关于 returnreturn truereturn false 的区别。return 可以看成是 return undefined,此时 returnreturn false 的写法都可以看成是返回一个 false 的结果(undefined 转换为布尔值就是 false),只有 return true 的写法时返回一个 true 的结果。了解这一点对于区分 forEachsomeevery 至关重要。

forEach 方法中,不管 return 返回的结果是 true 还是 falseforEach 都会跳过本次循环执行下一次循环。这就导致在 forEach 中无法直接终止循环(定义计数变量除外)。而 someevery 方法可以终止循环。

2. some() 实现遍历数组

some 方法中,return 返回的结果为 true 表示终止循环,return 返回结果为 false 表示跳过本次循环。

  • return 返回结果为 true 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.some(function (item) {
    	console.log(item);
    	return item === 3;
    });
    // result:
    // 1
    // 2
    // 3
    
  • return 返回结果为 false 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.some(function (item) {
    	if (item === 2) {
    		return;
    	}
    	console.log(item);
    });
    // result:
    // 1
    // 3
    // 4
    // 5
    

3. every() 实现遍历数组

some 方法恰好相反,在 every 方法中,return 返回的结果为 false 表示终止循环,return 返回结果为 true 表示跳过本次循环。

  • return 返回结果为 false 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.every(function (item) {
    	console.log(item);
    	return item !== 3;
    });
    // result:
    // 1
    // 2
    // 3
    
  • return 返回结果为 true 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.every(function (item) {
    	if (item === 2) {
    		return true;        // 这个地方如果换成 return 会有不一样的结果。
    	}
    	console.log(item);
    	return item !== 5;
    });
    // result:
    // 1
    // 3
    // 4
    // 5
    
标签: js forEach some every
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 88
码字总数 83792
×
dkvirus
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: