2012-07-09 9 views
6

配列のすべてのエントリのペアを使用したい。配列のlengthプロパティを使用せずにCoffeeScriptでこれを行う有効な方法はありますか?CoffeeScriptの配列から2つの要素をすべて取得する

私は現在、次のようなことをやっている:

# arr is an array 
for i in [0...arr.length] 
    first = arr[i] 
    second = arr[++i] 

答えて

14

のCoffeeScriptは正常forループのステップサイズを調整するためのfor ... byを持っています。だから、2のステップで、配列を反復処理すると、インデックスを使用して要素をつかむ:

a = [ 1, 2, 3, 4 ] 
for e, i in a by 2 
    first = a[i] 
    second = a[i + 1] 
    # Do interesting things here 

はデモ:http://jsfiddle.net/ambiguous/pvXdA/

したい場合は、ループ内の配列スライスと組み合わせる破壊さ割り当てを使用することができます。

a = [ 'a', 'b', 'c', 'd' ] 
for e, i in a by 2 
    [first, second] = a[i .. i + 1] 
    #... 

デモ:http://jsfiddle.net/ambiguous/DaMdV/

あなたはまた無視変数をスキップして、レンジループを使用することができます:

# three dots, not two 
for i in [0 ... a.length] by 2 
    [first, second] = a[i .. i + 1] 
    #... 

デモ:http://jsfiddle.net/ambiguous/U4AC5/

ので範囲はあなたに何もかからないんすべての残りのよう for(i = 0; i < a.length; i += 2)ループにコンパイル

+1

非常に有益。あなたがそれを最大限に活用するならば、CoffeeScriptはそのような美しい言葉です。 –

関連する問題