[JavaScript] JS中如何跳出循环/结束遍历

[JavaScript] JS中如何跳出循环/结束遍历

直接抛结论,下表是JS中常用的实现循环遍历的方法的跳出/结束遍历的办法,经过测试后的总结。可能各位大佬还有其他的办法,我在此表示大佬NB。

 

序号方法breakcontinuereturnreturn truereturn false结论
1 for循环 成功 跳出本次循环 不合法 不合法 不合法
2 Array.forEach() 不合法 不合法 跳出本次循环 跳出本次循环 跳出本次循环 ×
3 for...in 成功 跳出本次循环 不合法 不合法 不合法
4 Array.map() 不合法 不合法 跳出本次循环 跳出本次循环 跳出本次循环 ×
5 Array.some() 不合法 不合法 跳出本次循环 成功 跳出本次循环
6 Array.every() 不合法 不合法 成功 跳出本次循环 成功
7 Array.filter() 不合法 不合法 跳出本次循环 跳出本次循环 跳出本次循环 ×

1. for循环

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
for (var i = 0; i < arr.length; i++) {
    if (i === 2) {
        break;// ['a', 'b'] 成功跳出循环
        // continue;// ['a', 'b', 'd', 'e'] 只能跳出本次循环
        // return;// Uncaught SyntaxError: Illegal return statement
        // return true;// Uncaught SyntaxError: Illegal return statement
        // return false;// Uncaught SyntaxError: Illegal return statement
    }
    show.push(arr[i]);
}
复制代码

2. Array.forEach()

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
arr.forEach((item, index) => {
    if (index === 2) {
        // break;// Uncaught SyntaxError: Illegal break statement
        // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
        // return;// ["a", "b", "d", "e"] 只能跳出本次循环
        // return true;// ["a", "b", "d", "e"] 只能跳出本次循环
        // return false;// ['a', 'b', 'd', 'e'] 只能跳出本次循环
    }
    show.push(item);
})
复制代码

3. for...in...

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
for (var item in arr) {
    if (item === '2') {
        break;// ["a", "b"] 跳出循环成功
        // continue;// ["a", "b", "d", "e"] 只能跳出本次循环
        // return;// Uncaught SyntaxError: Illegal return statement
        // return true;// Uncaught SyntaxError: Illegal return statement
        // return false;// Uncaught SyntaxError: Illegal return statement
    }
 
    show.push(arr[item]);
}
复制代码

4. Array.map()

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
arr.map((item, index) => {
    if (index === 2) {
        // break;// Uncaught SyntaxError: Illegal break statement
        // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
        // return;// ["a", "b", "d", "e"] 只能跳出本次循环
        // return true;// ["a", "b", "d", "e"] 只能跳出本次循环
        // return false;// ["a", "b", "d", "e"] 只能跳出本次循环
    }
    show.push(item);
})
复制代码

5. Array.some()

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
arr.some((item, index) => {
    if (index === 2) {
        // break;// Uncaught SyntaxError: Illegal break statement
        // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
        // return;// ["a", "b", "d", "e"] 只能跳出本次循环
        return true;// ["a", "b"] 成功跳出循环
        // return false;// ["a", "b", "d", "e"] 只能跳出本次循环
    }
    show.push(item);
})
复制代码

6. Array.every()

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
arr.every((item, index) => {
    if (index === 2) {
        // break;// Uncaught SyntaxError: Illegal break statement
        // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
        // return;// ["a", "b"] 成功跳出循环
        // return true;// ["a", "b", "d", "e"] 只能跳出本次循环
        return false;// ["a", "b"] 成功跳出循环
    }
    return show.push(item);
})
复制代码
some()与 every()不同,some遍历中一个为真全部即为真,而every遍历中全部为真才行。some遍历中返回 true才会退出执行,而every则需要返回 false才会退出执行。

7. Array.filter()

复制代码
var arr = ['a', 'b', 'c', 'd', 'e'];
var show = [];
 
arr.filter((item, index) => {
    if (index === 2) {
        // break;// Uncaught SyntaxError: Illegal break statement
        // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
        // return;// ["a", "b", "d", "e"] 只能跳出本次循环
        // return true;// ["a", "b", "d", "e"] 只能跳出本次循环
        return false;// ["a", "b", "d", "e"] 只能跳出本次循环
    }
    show.push(item);
})
复制代码

 

posted @   mingruqi  阅读(307)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示