2016-04-05 1 views
1

要素を見つけるとすぐに最初の関数を返したいと思います。サブ関数内の値を返す方法は?

function foo(arr) { 
 
    arr.forEach(function (e) { 
 
     if (e == 4) 
 
     return true // this obviously does not return the foo function 
 
    }); 
 
    return false 
 
}

答えて

4

我々はforEachのような派手な機能を持っているからといって、それはあなたがそれらを必要とするとき、あなたはまだ、プレーンforループを使用することはできませんという意味ではありません:

function foo(arr) { 
    for (var x = 0; x < arr.length; x++) { 
     if (arr[x] == 4) 
      return true; 
    } 
    return false; 
} 
+0

'return arr [x] == 4;'も見てよかったです。 – Jai

+1

@Jaiは、それらをすべてチェックするのではなく、一致しない要素を見てすぐにfalseを返すでしょうか? –

1

使用Array#some()

some()方法テストをアレイ内のいくつかの要素が設けられた関数によって実装試験に合格するかどうか:

これは単なる一例です。

some()は、callbackが真の値を返すものを見つけるまで、アレイに存在する各要素に対して1回、callback関数を実行します。そのような要素が見つかると、some()はすぐにtrueを返します。それ以外の場合、some()falseを返します。 callbackは、値が割り当てられた配列のインデックスに対してのみ呼び出されます。削除されたか、または値が割り当てられていない索引に対しては呼び出されません。

function foo(arr) { 
 
    return arr.some(function (e) { 
 
     return e == 4; 
 
    }); 
 
} 
 

 
document.write(foo([1, 2, 3, 4]) + '<br>'); 
 
document.write(foo([1, 2, 3, 42]) + '<br>');

1

または、単に古い学校に行くことを望まない場合は、fooの範囲内の変数を設定することができますfor

function foo(arr) { 
    var result = false; 
    arr.forEach(function (e) { 
     if (e == 4) 
     result = true; 
    }); 
    return result 
} 
+0

OPは「要素を見つけるとすぐに」と言っていました。 –

+0

ええと、私は携帯で、本当にそれを見ていない:) – Eduard

関連する問題