magnitudeArray = []
for index, dataPoint of chartData
magnitudeArray.push dataPoint.magnitude if dataPoint.magnitude?
上面的代码可行,但对于coffeescript来说,它的丑陋和不合理。首先,index
var是完全未使用的,它就在那里,所以我可以访问dataPoint
var作为关联数组而不是索引的结果。还有它的三条线!使用coffeescript循环,数组应该可以在一个循环之外用一行写入。
我想这样的事情是可能的:
magnitudeArray = for dataPoint of chartData when dataPoint.magnitude?
你知道更清洁的咖啡师的做法吗?
答案 0 :(得分:1)
是的,在这种情况下,您应该可以使用array comprehension,但是您需要为chartData
的键使用变量,我认为这是一个对象。您可以使用_
来表示未使用的变量(虽然我不知道这是否是CoffeeScript中的常见做法):
magnitudes = (point.magnitude for _, point of chartData when point.magnitude?)
答案 1 :(得分:1)
您可以使用'解构分配'将其压缩一点
magnitudes = (magnitude for i, {magnitude} of chartData when magnitude?)
甚至
magnitudes = (m for i, {magnitude: m} of chartData when m?)