2016-12-07 46 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(); 
    } 
}