配列内のエントリのすべてのペアを使用したい。length
配列のプロパティを使用せずに CoffeeScript でこれを行う効果的な方法はありますか?
私は現在、次のようなことをしています:
# arr is an array
for i in [0...arr.length]
first = arr[i]
second = arr[++i]
配列内のエントリのすべてのペアを使用したい。length
配列のプロパティを使用せずに CoffeeScript でこれを行う効果的な方法はありますか?
私は現在、次のようなことをしています:
# arr is an array
for i in [0...arr.length]
first = arr[i]
second = arr[++i]
CoffeeScript には、通常のループfor ... by
のステップ サイズを調整する機能があります。for
したがって、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)
ため、範囲によってコストがかかることはありません。</p>