为了账号安全,请及时绑定邮箱和手机立即绑定

请问怎么在es6中优雅的退出循环并return

请问怎么在es6中优雅的退出循环并return

拉丁的传说 2019-02-25 17:23:37
常常会遇到这样一个情况:var flag=false;var arr=["jpg","ppt","doc"];var newArr=arr.length>0 && arr.reduce(function(x,y){    if(x===""){        flag==true        return    }    return x+"|"+y;})if(flag)return;//假装下面有代码//假装下面有代码//假装下面有代码在一个循环中想要终止程序的运行,需要多一个flag变量来处理,这样很丑陋并且还多出一个变量,很恶心,请问有没有比较优雅的方式???
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

你要的效果用 .some() 就可以解决,如果想数据所有项全部都通过断言,可以用 .every():


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


if (arr.some(n => n === 5)) {

    return;

}


// 假装下面有代码

来看个直观点的


if (arr.some(n => {

    console.log(n);

    return n === 5;

})) {

    console.log("哎呀不得了,中断了");

    return;

}


console.log("后面的代码");

输出


1

2

3

4

5

哎呀不得了,中断了


查看完整回答
反对 回复 2019-03-06
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

var a = [1,2,3,4,5,6];

a.map(v => {

    if(v > 2) throw new Error;

    console.log(v)

})

按你这样用map可以强行抛出一个错误来退出。

不过最好的方式应该是for循环中break;或者数组的some方法return


查看完整回答
反对 回复 2019-03-06
  • 2 回答
  • 0 关注
  • 805 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信