2011-10-20 15 views
1
var names = [name for(name in generateNames(product))]; 

generateNamesは、製品内のさまざまなプロパティの列名の配列を返します。JavaScriptでこの奇妙な表記は何を意味していますか?

しかし名前の全体の名前は何ですか?

+0

私には構文エラーのようです(予期しないトークンがあります)。 – Quentin

+0

私の教授が教えてくれたことは何ですか:この関数は以下のように呼び出すことができます:var names = [name(generateNames(product)の名前)] – antonpug

+0

私は... wtfのようでしたか? – antonpug

答えて

7

array comprehensionです:ここで

https://developer.mozilla.org/en/New_in_JavaScript_1.7#Array_comprehensions_(Merge_into_Array_comprehensionsを参照してください)

は、あなただけのFirefoxで、試すことができjsfiddleです。

これはJavascript 1.7の新機能で、Pythonのlist comprehensionsのように機能します。

+0

だから私は次のようなものを持っている:var names = [name(generateNames(product)の名前)] ... ...これを行うポイントは何か...配列の理解? – antonpug

+0

そのままですが、コードは実際には配列の理解の恩恵を受けません( 'var names = generateNames(product);'と書くだけでよい)。私はそれだけの例だと思う。補足は、元の配列から各アイテムを投影する場合や、条件を追加する場合などに便利です(例: if(name!== "")]; 'var name = [returnSomethingFrom(name)for(generateNames(product)の名前) –

+0

ああ!意味をなさない条件を追加することができます。実際の計算はどうですか?それを行う方法はありますか?私は配列[1,2,3]を持っていて、配列から最大の数を取得したいと言ったように、何とかそれを条件として含めることができますか? – antonpug

4

これは配列の解説です。 JavaScript 1.7に追加されました。 Firefox AFAIKのようなMozillaブラウザでのみ動作します。 http://jsfiddle.net/hfARW/1/

+1

ああ!ほとんどのブラウザで文法エラーが出ています。私は半分ほどでした:) – Quentin

+0

JavaScript 1.6,1.7,1.8。 1.9には実験的なものがたくさんありますが、それはECMAScript 6に組み込むことさえしません。ECMAScript 5では多くのものが*ですが、多くはMozillaの遊び場です。本物の解説はCoffeeScriptとPythonにあります。 :) John Resigは[JSのバージョン](http://ejohn.org/blog/versions-of-javascript/)にちょっとした投稿をしていますが、興味深いかもしれません。 –

関連する問題