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;
})();
まとめ
「あるかも」と思って調べてみると、意外とある。
コメントを残す