答えて
あなたまたはあなたが使用しているライブラリがArray
プロトタイプを拡張しているため、追加のプロパティが表示されています。彼の答えでマイクが指摘しているように、あなたはhasOwnProperty
を使ってそれらをスキップすることができます。
for own i of foo
obj = foo[i]
...
しかし、マイクはまた、彼の答えで指摘するように、それはカウンタをインクリメントするのではなく繰り返し処理を行うことにより、配列をループに、より効率的です:確かに、CoffeeScriptのは、その中に組み込まれてown
キーワードがあなたのためにこれを行い持ちますキー。これを行うには、あなたがCoffeeScriptののfor...in
構文を使用したい:
for obj in foo
...
(あなたが同様のループのインデックスが必要な場合は、for obj, i in foo
を書くことができます。)
ああ、偉大なことを知って、それを今すべて理解してください。前にCoffeeScriptsを完全に理解していなかった。 「自分のために」知っていることも素晴らしいです。 – fancy
+1、 'own'について知りませんでした! –
for (... in ...)
オブジェクトのプロトタイプのものが返されます。これは、文字列の代わりに数字キーを取得し、確実に順序で繰り返し処理の利点を持っているJavaScript for...in vs for
最善の解決策は、インデックスループを使って配列の要素を反復することである
for (var i = 0, n = arr.length; i < n; ++i) { ... }
参照してください。
また、hasOwnProperty
を使用して、プロトタイプからキーを取得しないようにすることもできます。
for (var k in obj) {
if (!obj.hasOwnProperty(k)) { continue; }
...
}
か、hasOwnProperty
がオーバーライドされる心配している場合にはバリエーション。
Object.defineProperty
を使用して、これらのプロトタイププロパティをenumerable: false
と定義することもできます。
なぜdownvoteですか? –
@Mikeおそらくあなたの答えはJavaScriptに関するもので、質問はCoffeeScriptに関するものだったでしょう。 (あなたの答えは確かに便利です。) –
@トレヴァー、応答に感謝します。 CoffeeScriptは確かに別の言語ですが、他の言語にコンパイルを開始するほとんどの言語のように、早期採用者は基礎となる言語の詳細を理解しなければなりません。Cの初期採用者は、それはコンパイルされ、Scalaの早期採用者はJavaやJVMについて知らなくても得ることができませんでした。 –
- 1. String.replaceは余分な引用符を返しています
- 2. BeautifulSoupは予期しない余分なスペースを返します
- 3. チェックボックスヘルパーが余分なパラメータを送信していますか?
- 4. If($ currentCount <= $ allowedCount)..余分な1を返しますか?
- 5. サブレポートが余分な空白ページを作成しています
- 6. WordPressのすべてのpage_namesを余分なく返しますか?
- 7. 余分な一致を返す
- 8. ブートストラップレイアウトを使用し、右側に余分な余分なスペースがあります
- 9. CS50 IDE:printfは余分な文字を返します
- 10. SQLite Insertは余分な行で値を返します
- 11. Firebase OrderByChildは余分な空の子を返します
- 12. 余分がインテントを通過しない
- 13. UNIONクエリで余分な列が返されない
- 14. Python3 division:余りがない場合はintを返し、余りがある場合はfloatを返します。
- 15. SVGタグが余分なスペースを取っています
- 16. JSONレスポンスに余分な文字が含まれています
- 17. GridViewと余分なスペースが埋め込まれています
- 18. MySqlは行数を余分な列として選択していますか?
- 19. 余分なキャリッジリターンはどこから来ていますか?
- 20. @ManyToMany Hibernateの余分なテーブルに余分なフィールドを追加できますか?
- 21. Pythonのjson.loadsとValueErrorを示しています余分なデータ
- 22. Android String.split( "")が余分な要素を返す
- 23. subprocess.checkoutputが余分な改行を返すのはなぜですか?
- 24. この "余分な"余分な原因は何ですか?
- 25. Hugo目次に余分なドットが入っています
- 26. sqliteデータベースに余分なデータが挿入されています
- 27. 明らかに余分な行を返すMySQLクエリ
- 28. cakephpチェックボックスが余分な隠しフィールドを表示しています
- 29. Pythonコードから "余分な"ドキュメンテーションを抽出していますか?
- 30. バリアントレコードに余分なスペースが割り当てられていますか?
はなぜだけではなく、forまたはwhileループの通常のでしょうか? – sdleihssirhc
それらはオブジェクトのプロトタイプに追加されるのでしょうか? JavaScriptでは、以下を使用する必要があります:foo {if(foo.hasOwnProperty(i)){...}}のiのために、node.js/coffeescriptがこれをサポートする方法がわからない場合 –