私が次のものを持っているとしましょう:
scoringObject =
a : -1
b : 0
c : 1
d : 2
resultsArray = ['a','c','b','b','c','c','d']
Coffescript を使用して、aggregateScore (例では +4) を計算するにはどうすればよいですか?
私が次のものを持っているとしましょう:
scoringObject =
a : -1
b : 0
c : 1
d : 2
resultsArray = ['a','c','b','b','c','c','d']
Coffescript を使用して、aggregateScore (例では +4) を計算するにはどうすればよいですか?
あなたの例はそのままではあまり意味がないので、私はあなたが持っているものは次のとおりであると仮定します:
resultsArray = ['a','c','b','b','c','c','d']
あなたのscoringObject
投稿から。次に、次のように計算できます。
aggregateScore = 0
aggregateScore += scoringObject[k] for k in resultsArray
# => 4
間違った想定をした場合はお知らせください。
ECMAScript 5 の機能を使用してもかまわない場合は、Array::reduce
この種のことを非常に簡潔に表現できます。
aggregateScore = resultsArray.reduce ((sum, x) -> sum + scoringObject[x]), 0
( のパラメータの順序がかなり悪いと思いますreduce
。初期値を最初に、縮小関数を最後にする必要があります)
Underscore.jsは、クロスブラウザーの reduce 実装を提供します:)