1
magnitudeArray = []
for index, dataPoint of chartData
     magnitudeArray.push dataPoint.magnitude if dataPoint.magnitude?

上記のコードは機能しますが、coffeescriptの場合は醜くてコーヒースクリプトではありません。まず、indexvarは完全に使用されdataPointていません。そのため、インデックスではなく連想配列の結果としてvarにアクセスできます。また、その3行!Coffeescriptループでは、配列はループから離れた1行で書き込み可能であると想定されています。

私はこのようなことが可能だと思います:

magnitudeArray = for dataPoint of chartData when dataPoint.magnitude?

これを行うためのよりクリーンなコーヒースクリプトの方法を知っていますか?

4

2 に答える 2

1

「割り当ての分解」を使用して、もう少しコンパクトにすることができます

magnitudes = (magnitude for i, {magnitude} of chartData when magnitude?)

あるいは

magnitudes = (m for i, {magnitude: m} of chartData when m?)
于 2012-06-22T03:45:12.303 に答える
1

はい、この場合は配列内包表記を使用できるはずですが、のキーには変数を使用する必要がありchartDataます。これはオブジェクトであると想定しています。未使用の変数を示すために使用でき_ます(ただし、これがCoffeeScriptの一般的な方法かどうかはわかりません)。

magnitudes = (point.magnitude for _, point of chartData when point.magnitude?)

Coffeescript.orgの例

于 2012-06-22T02:36:47.010 に答える