0

ユーザー/エンジン定義関数を反復処理するときに、forループの「ブレーク」機能のシミュレーションを実装するための最良の方法は何ですか?

foreach([0,1,2,3,4],function(n){
    console.log(n);
    if (n==2)
        break;});

関数が「false」を返したときに壊れてしまうような方法でforeachを実装することを考えましたが、それが通常どのように行われるかについての考えを聞きたいと思います。

4

1 に答える 1

7

returningfalseはそれを行うための最も一般的な方法です。これがjQueryのイテレータ関数の機能.each()です。

コールバック関数がfalseを返すようにすることで、特定の反復で$ .each()ループを中断できます。false以外を返すことは、forループのcontinueステートメントと同じです。すぐに次の反復にスキップします。

そして、その非常に単純化された実装:

each: function( object, callback ) {
  var i = 0, length = object.length,
  for ( var value = object[0]; 
        i < length && callback.call( value, i, value ) !== false; // break if false is returned by the callback 
        value = object[++i] ) {}
  return object;
}
于 2012-09-02T17:35:04.933 に答える