2016-12-07 43 views
0

例如返回:如何從一個更高的功能

function foo() { 
    someArray.map(bar) { 
    if (whatever) 
     return; // I want to return from the foo function 
    return bar.something // Here I return to map function 
    } 
} 

這是我目前的解決方案:

let flag = false 
function foo() { 
    someArray.map(bar) { 
    if (whatever){ 
     flag = true 
    } 
    return bar.something // Here I return to map function 
    } 
} 
if (flag === true) { 
    return; 
} 

我不知道是否有更好的辦法?

+2

我猜你想打破「地圖」功能。你不能那樣做。 –

+1

可能是http://stackoverflow.com/questions/12260529/break-statement-in-javascript-array-map-method – Cr4xy

+0

使用正確的工具來完成這項工作。你想'找到',而不是'地圖'。 – Bergi

回答

0

你不能破壞你的地圖功能。但是你不使用map的結果。如果您想在任何條件後打破map,則可以使用some數組方法代替它。

例如:

let flag = false; 
function foo() { 
    someArray.some(bar) { 
    if (!whatever){ 
     return false; 
    } 
    flag = true; 
    return true; 
    } 
} 
if (flag === true) { 
    return; 
} 

或者,你可以調用任何函數內部some而不是使用flag變量

function foo() { 
    someArray.some(bar) { 
    if (!whatever){ 
     return false; 
    } 
    callYourCodeHere() 
    return true; 
    } 
} 

或者是這樣的:

function foo() { 
    const anySuccess = someArray.some(bar) { 
    return !!whatever; 
    } 
    if(anySuccess) { 
     callYourCodeHere(); 
    } 
}