2011-01-31 4 views

答えて

4

array.every()関数は、各配列要素でテストコールバック関数を使用しますが、そのテスト関数がfalseを返すと停止します。配列をループすると、配列に関係なくすべての要素が処理されます。つまり、array.every()関数は、配列のすべての要素が特定の条件を満たすかどうかをテストするためにより適切に使用されます。詳細はarray.every()のthe documentationを参照してください。

0

基本的には、配列のforループまたはwhileループの一般的な使用法を抽象化する便利な関数です。コードを少し素早く作成し、あなたの好みに応じて少し読みやすくします。

すべての要素に対して関数呼び出しを行うので、array.everyを使用すると少しオーバーヘッドが発生しますが、これは99.99 ...%の時間では特に問題ありません。

2

アレイのすべての要素がタイプIFooであるかどうかをチェックし、それに応じて特定の操作を実行するかどうかを確認するとします。

少なくとも3つの方法があります。

1反復

var allFoo:Boolean = true; 
for (var i:int = 0; i < array.length; i++) { 
    if (!(array[i] is IFoo)) { 
    allFoo = false; 
    break; 
    } 
} 

if (allFoo) { 
    // perform operation 
} else { 
    // do something else 
} 

2列挙

var allFoo:Boolean = true; 
for each (var e:* in array) { 
    if (!(e is IFoo)) { 
    allFoo = false; 
    break; 
    } 
} 

if (allFoo) { 
    // perform operation 
} else { 
    // do something else 
} 

3 Array.every()

function isElementFoo(item:*, index:int, array:Array):Boolean 
{ 
    return (item is IFoo); 
} 

if (array.every(isElementFoo)) { 
    // perform operation 
} else { 
    // do something else 
} 

私のExPEC 2つ目は最も速く、3つ目は一時変数がないために最もエレガントです。最終的にあなたが選択するのは、自分の個人的なスタイルや哲学のように、プログラムの性質に依存します。

関連する問題