CoffeeScriptでは、配列に値をどのように追加しますか?


98

CoffeeScriptで配列に値を追加するための規定の方法は何ですか?私はPragProg CoffeeScriptの本をチェックしましたが、これは作成、スライス、スプライシング、および反復についてのみ説明しており、追加については説明していません。

回答:


192

古き良きはpushまだ動作します。

x = []
x.push 'a'

9
PragProg本の著者はこちら。ティロの答えに+1。Arrayこの本のプロトタイプメソッドについては触れたくありませんでした。これは、優れたJavaScriptドキュメントがすでにたくさん出回っているからです。たとえば、developer.mozilla.org
Trevor Burnham

キャラクターではなくオブジェクトがある場合はどうでしょうか?
Gaʀʀʏ

x << 'a'働きたいと思っていました。
クロエ

49

リスト内包表記を使用する方がはるかに優れています。

たとえばこれではなく:

things = []
for x in list
  things.push x.color

代わりにこれを行ってください:

things = (x.color for x in list)

23
リストの値が追加されるわけではありません。これは、things配列を完全に置き換えます。私もそれをテストしました。
ajsie

まあ、確かにajsie、あなたは正しい、それはそれを置き換えるのではなく、追加するのです。ただし、ポイントは、通常、プッシュしているときに、とにかく配列内包のような何かをしていることが多いということです。確かにすべての場合ではありませんが、多くの場合。
スラニャミ2012

3
@suranyami逆に、それをうまく使うことは考えられません。私はむしろそうしたいだけでthings = list、はるかに簡潔です。
Michael Dorst 2013

@suranyamiリンクが切れています。
derekdreery 2013年

@anthropomorphicまあ、もちろん。これは人為的な例です。:の代わりにこのようなことの何かを言ってみましょう colors = (item.color for item in list)
suranyami

2

呼び出しをチェーンしている場合、追加では配列の長さではなく配列を返します。この場合、.concat([newElement])を使用できます

concatはその連結先のような配列を期待しているため、[newElement]である必要があります。効率的ではありませんが、適切な設定でクールに見えます。


「メソッドは効率的ではない」と述べたように、呼び出しのチェーンはよりスタイリッシュな方法ですconcat。配列A +配列Bの要素から構築された新しい配列を返します。オブジェクトへの参照は保持されるため、参照されるオブジェクトへの変更が保持されます配列A、配列Bまたは連結のいずれかの結果は、他の配列にも反映されます。
SidOfc 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.