0

假设我有以下内容:

scoringObject = 
  a : -1
  b : 0
  c : 1
  d : 2

resultsArray = ['a','c','b','b','c','c','d']

使用 Coffescript,我如何计算 aggregateScore(示例中为 +4)?

4

2 回答 2

1

由于您的示例没有多大意义,我将假设您拥有的是:

resultsArray = ['a','c','b','b','c','c','d']

scoringObject你的帖子。然后你可以这样计算:

aggregateScore = 0
aggregateScore += scoringObject[k] for k in resultsArray
# => 4

如果我假设错误,请告诉我。

于 2012-09-24T12:38:32.650 回答
0

如果您不介意使用 ECMAScript 5 中的功能,Array::reduce可以非常简洁地表达这种事情:

aggregateScore = resultsArray.reduce ((sum, x) -> sum + scoringObject[x]), 0

(感觉的参数顺序reduce挺可惜的,初始值应该是第一个,reducing函数在最后一个)

Underscore.js提供了一个跨浏览器的 reduce 实现:)

于 2012-09-24T16:36:07.030 回答