前言 数组的原生方法-MDN
数组方法很多,有时候我们需要跳出循环以提高代码的执行效率。
本文为粘贴别人文章(文末有传送门),但以下方法均测试过,如测试有不同结果欢迎留言
结论总结
forEach、map和filter目前我不知有什么办法停止当前遍历,表格(图片)中提到的都是可以跳出本次循环的 ,
2020.10.16 10:20 更新:
抛出错误可以中断 Foreach 循环,注意是跳出这个循环,如下
[1,2,3].forEach(i => { if(i==2) throw "中断循环"; console.log(i) }) //1 //Uncaught 中断循环把 forEach 换成 filter 与 map 结果依旧同上
另外
filter: 主要是过滤数组的作用,里面加条件过滤就行了,跳出循环个人认为没有意义。map: 主要是重新加工每个数组项的作用,如果需要跳过某些元素,那你就应该考虑 map 是不是用错了(考虑filter,或者for。for循环是比forEach更有优势,尽管优势及其微小)【(❁´◡`❁)】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); }) 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); }) 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 遍历项中一个为真全部即为真,而 every 遍历项中全部为真才行。some 遍历中返回 true 才会退出执行,而every 则需要返回 false 才会退出执行。
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); })以上。
【思否-原文链接】起飞~~
