为数组中的每个元素调用函数

时间:2014-08-15 19:05:55

标签: coffeescript

我有这段代码:

log.error(r.reason) for r in results when r.state == 'rejected'

转换为:

var r, _i, _len, _results;
_results = [];
for (_i = 0, _len = results.length; _i < _len; _i++) {
  r = results[_i];
  if (r.state === 'rejected') {
    _results.push(log.error(r.reason));
  }
}
return _results;

我不需要累积log.error的结果,我只需要为数组的每个适当元素打印一个错误。这是如何在coffeescript中完成的?

1 个答案:

答案 0 :(得分:2)

CoffeeScript中几乎每个语句都是一个表达式。对于循环,这意味着在数组中累积每次迭代的结果。如果您不想要这种行为,则必须显式添加return语句:

log.error(r.reason) for r in results when r.state == 'rejected'; return

此外,为了回答您的问题标题:“为数组中的每个元素调用函数”如果您的JS运行时支持数组函数forEach,这是一种替代方法在每个数组项上应用函数:

results.forEach (item) -> log.error item.reason if item.state == 'rejected'