常常会遇到这样一个情况: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
哎呀不得了,中断了
一只萌萌小番薯
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
添加回答
举报
0/150
提交
取消