在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 請問怎么在es6中優(yōu)雅的退出循環(huán)并return

請問怎么在es6中優(yōu)雅的退出循環(huán)并return

常常會遇到這樣一個情況:

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;

//假裝下面有代碼
//假裝下面有代碼
//假裝下面有代碼

在一個循環(huán)中想要終止程序的運行,需要多一個flag變量來處理,這樣很丑陋并且還多出一個變量,很惡心,請問有沒有比較優(yōu)雅的方式???

==================================Updata========================================
實在是不好意思,我之前的提問不太明確,已經(jīng)修改了問題,需求是這樣的,我想對這個newArr進行正則表達式的校驗,來排除一些文件格式。

回答
編輯回答
愿如初

Array.prototype.some

2017年12月25日 20:23
編輯回答
初心

你要的效果用 .some() 就可以解決,如果想數(shù)據(jù)所有項全部都通過斷言,可以用 .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
哎呀不得了,中斷了
2018年1月26日 18:10
編輯回答
墨沫

我也發(fā)現(xiàn)這個問題了 = =因為return 是返回一個函數(shù)。幾乎在拉姆達表達式中return 就廢了- -

2017年5月13日 19:01
編輯回答
淺淺

看不太明白樓主的意思但是隨便說一點吧
map在這里是不合適的,map是有返回的的
如果你的目地是如何某個數(shù)組中含有,特殊的字符或值,你就中斷這個函數(shù),你可以先用indexof,includes來處理
比如說,如果某個數(shù)組中含有空字符串,我就不處理整個數(shù)組

if(arr.includes('') )return 

然后進入循環(huán)

或者直接用for循環(huán) 如果

function func(){
for(int i=0;i<=arr.length;i++){
    if(arr[i]==='') return //如果在函數(shù)中,執(zhí)行到這里,跳出循環(huán)并直接返回了,下面代碼都不會執(zhí)行
    .......
}
.......
}
2018年3月25日 13:42
編輯回答
青黛色
if(['2','3',''].some(function(item, index, array){
    return item === '';
})){
//如果數(shù)組中包含''就執(zhí)行這里
console.log(1);
}else{
//否則執(zhí)行這里
console.log(2);
}
2018年4月26日 18:56
編輯回答
青瓷
var a = [1,2,3,4,5,6];
a.map(v => {
    if(v > 2) throw new Error;
    console.log(v)
})

按你這樣用map可以強行拋出一個錯誤來退出。
不過最好的方式應(yīng)該是for循環(huán)中break;或者數(shù)組的some方法return

2018年4月21日 07:21