coffeescript循环通过关联数组

时间:2012-06-22 02:27:26

标签: coffeescript

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?

你知道更清洁的咖啡师的做法吗?

2 个答案:

答案 0 :(得分:1)

是的,在这种情况下,您应该可以使用array comprehension,但是您需要为chartData的键使用变量,我认为这是一个对象。您可以使用_来表示未使用的变量(虽然我不知道这是否是CoffeeScript中的常见做法):

magnitudes = (point.magnitude for _, point of chartData when point.magnitude?)

Example at coffeescript.org

答案 1 :(得分:1)

您可以使用'解构分配'将其压缩一点

magnitudes = (magnitude for i, {magnitude} of chartData when magnitude?)

甚至

magnitudes = (m for i, {magnitude: m} of chartData when m?)