假设我有以下内容:
scoringObject =
a : -1
b : 0
c : 1
d : 2
resultsArray = ['a','c','b','b','c','c','d']
使用Coffeescript,我如何计算总分数(示例中为+4)?
答案 0 :(得分:1)
由于你的例子没有多大意义,我会假设你拥有的是:
resultsArray = ['a','c','b','b','c','c','d']
使用帖子中的scoringObject
。然后你可以像这样计算:
aggregateScore = 0
aggregateScore += scoringObject[k] for k in resultsArray
# => 4
如果我错误地假设,请告诉我。
答案 1 :(得分:0)
如果您不介意使用ECMAScript 5中的功能,Array::reduce
可以让您非常简洁地表达这类内容:
aggregateScore = resultsArray.reduce ((sum, x) -> sum + scoringObject[x]), 0
(我觉得reduce
的参数顺序非常不幸;初始值应该是第一个,而减少函数应该是最后一个)
Underscore.js provides跨浏览器减少实现:)