私は、CoffeeScript 内包表記をできるだけ効率的に使用して頭を悩ませようとしています。あるリストを別のリストに変換するという基本的なマッピングができたと思いますが、検索はまだ冗長に思えます。
ショップへのアイテムのマップがあるとします。
shopMap:
toyStore: ["games", "puzzles"]
bookStore: ["novels", "picture books"]
そして、与えられた商品がどの店にあるかを知りたいのです。CoffeeScript でそれを行う最善の方法は何ですか?
JavaScriptでできることは次のとおりです。
var shop = findShop(item);
function findShop(item) {
for (shop in shopMap)
itemList = shopMap[shop]
for (i = 0, ii = itemList.length; i<ii; i++) {
if (itemList[i] === item) {
return shop;
}
}
}
}
ブレークを使用する代わりに、return ステートメントを使用してループからすばやく抜け出せるようにする関数を使用しましたが、これは 1 回しか使用されないため、この関数はちょっと厄介です。
それで、できれば新しい関数を作成する必要のない、より短いCSに相当するものはありますか?