28

私は次のようなコーヒースクリプトで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--)
4

6 に答える 6

2

A different take just for the record:

i = something.length
while item = something[--i]
  #use item

(will break on falsy values)

于 2011-10-29T03:34:29.780 に答える
1

逆にループするエレガントな方法はないようです。

これに関する GitHub チケットを確認しましたが、クローズされています: https://github.com/jashkenas/coffee-script/issues/1187

以前の構文は次のとおりです。

for some in something by -1

しかし、最近のバージョンでは削除されています。編集: 動作するようになりました (1.6.2 @編集時)

于 2011-10-27T19:01:41.597 に答える
0

次の行に沿った慣用的な方法 ( docsから):

lst = ['a', 'b', 'c']
for n in (num for num in [lst.length-1..0])
  alert lst[n]

(@Trevorのメモの後に編集)

編集:

ただし、パフォーマンスが重要な場合は、この同等のスニペットを使用すると、見た目が劣る可能性がありますが、生成される JavaScript は少なくなります。

lst = [1,2,3]
i = lst.length
alert lst[i] while i--
于 2011-10-27T19:01:01.713 に答える
0

減分するインデックスベースの for ループの場合、次を使用できます。

for i in [0...something.length].reverse()

これにより、@ TrevorBurnhamが言及した混乱が解消されます。これは、エンドポイントを自分で指定する際の問題です。

something.lengthがの場合0、これは

for i in []
于 2015-02-03T21:35:28.013 に答える