http://mnmly.github.io/library/coffeescript/04_idioms.html
経緯
例えばCoffeeScriptで以下のような配列があったとき、
politicians = [ {"name": "abe", "role": "prime minister"} {"name": "aso", "role": "via prime minister"} {"name": "masuzoe", "role": "tax consumer"} ]
["abe", "aso", "masuzoe"]
という配列を返して欲しいなーと思ったとき、Rubyだったら以下のようにかけます。
result = politicians.map{|item| item.name }
CoffeeScriptで同じように簡単にかけないかなーと思ったお話。
やり方
調べてみたら案の定ありました。
result = (item.name for item in politicians)
このとき、カッコを忘れてしまうと動かないので注意しましょう。
ちなみに、吐き出されるJavaScriptは以下のようなものです。
var item, result; result = (function() { var i, len, results; results = []; for (i = 0, len = politicians.length; i < len; i++) { item = politicians[i]; results.push(item.name); } return results; })();
まとめ
「あるかも」と思って調べてみると、意外とある。
コメントを残す