some 和 every 可以用 return 值跳出循环
forEach,filter,find,findIndex,map,reduce,reduceRight 没有可用的跳出方法,continue 和 break 都不能用,那么怎么跳出这些数组循环?
网上搜索了一下,只见到一种构造 try catch 结构然后 throw 的方法,一点也不优雅
用于循环的数组自身消失的话,循环不就自然中止了
[1,2,3,4,5].forEach( (val,idx,arr) => {
if( val > 3 )
return arr.length = 0 ;
console.log(val);
} );
跳出过程并未本质改变这些循环的语义,所有的返回值(比如 reduce)仍然有效,显然比抛出错误法好多了
唯一需要注意的是,因为置空的副作用,部分情况要先对数组做浅拷贝
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.