2011-12-09 10 views
3

私は簡単に入力を単一の値または配列のいずれかに扱い、配列の単一の値または各値のいずれかに対して操作を実行するコードを記述したいと考えています。配列のようなcoffeescriptの単一値を扱う方法

理想的なコードは、ちょうどのようになります。

a = for i in j() 
    i++ 

が、jは1または[1、2、3]のいずれかを返すことができます。

jが配列を返すかどうかを確認するための良い方法はありません。たぶん、私はできるかぎり、coffeescriptには良い型識別システムがあります。

if j().isArray then j() else [j()] 

または何か?

このアレイ変換ロジックを可能な限り隠す構文的に魅力的な方法は誰もが知っていますか?

+0

j()はvarにキャッシュする必要があります。 –

+0

何が私を得ますか? – xaxxon

+0

jQueryには潜在的に使用できるisArrayメソッドがあるようです。この場合は問題ありませんが、jqueryを使用しない答えが好ましいでしょう – xaxxon

答えて

12
[].concat j() 

として呼び出します。

2
asArray = (j) -> if j instanceof Array then j else [j] 

は、配列が、それ以外のラップ場合、結果がコピーされます

a = for i in asArray(j()) 
    i++ 
+0

ええ、それは私がやらなければならないことのようです。 – xaxxon

+1

'instanceof'にはあなたが知っておくべきいくつかの問題があります:http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/必要な場合は、そのページの下部にある代替isArray定義を使用してください。 –

+0

ええ、おそらくjqueryの$ .isArrayを使用します:http://api.jquery.com/jQuery.isArray/ – xaxxon

関連する問題