假设我有以下内容:
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
挺可惜的,初始值应该是第一个,reducing函数在最后一个)
Underscore.js提供了一个跨浏览器的 reduce 实现:)