私は、次のようなcoffeescriptで増分forループを行う方法を知っています:
Coffeescript:
for some in something
生成されたJavascript:
for (_i = 0, _len = something.length; _i < _len; _i++)
どのように私はCoffeescriptでこれに似たfor減少ループを作成するのですか?
for (var i = something.length-1; i >= 0; i--)
編集:CoffeeScript 1.5の時点で、 -1で
の構文がサポートされています。
まず、ステップを指定できる by
キーワードを理解しておく必要があります。次に、CoffeeScriptコンパイラがエンドポイントをループするための非常に単純なアプローチを取っていることを理解する必要があります(問題1187 を参照してください)。
for some in something by -1 # don't do this!!!
無限ループになります。これはインデックス0から開始し、インデックスを-1だけ増やし、インデックスが something.length
に達するまで待機します。一口。
したがって、範囲ループ構文を代わりに使用する必要があります。これにより、エンドポイントを自分で指定することができますが、ループ項目を自分で取得する必要があります。
for i in [something.length - 1..0] by -1
some = something[i]
明らかに、それはかなり面倒です。したがって、代わりに something.reverse()
を繰り返し行うことを強く検討する必要があります。 reverse()
は、あなたが呼び出す配列を変更することを覚えておいてください!配列を保持しながらそれを逆方向に繰り返したい場合は、それをコピーする必要があります:
for some in something.slice(0).reverse()