coffeescript - 从CoffeeScript中的数组获取每两个元素

标签 coffeescript

我想使用数组中的每对条目。有没有在不使用数组的length属性的情况下在CoffeeScript中执行此操作的有效方法?

我目前正在执行以下操作:

# arr is an array
for i in [0...arr.length]
    first = arr[i]
    second = arr[++i]

最佳答案

CoffeeScript具有 for ... by ,用于调整常规for循环的步长。因此,以2步迭代数组,并使用索引获取元素:

a = [ 1, 2, 3, 4 ]
for e, i in a by 2
    first  = a[i]
    second = a[i + 1]
    # Do interesting things here

演示:http://jsfiddle.net/ambiguous/pvXdA/

如果需要,可以在循环内使用分解后的赋值与数组切片结合使用:
a = [ 'a', 'b', 'c', 'd' ]
for e, i in a by 2
    [first, second] = a[i .. i + 1]
    #...

演示:http://jsfiddle.net/ambiguous/DaMdV/

您也可以跳过被忽略的变量,并使用范围循环:
# three dots, not two
for i in [0 ... a.length] by 2
    [first, second] = a[i .. i + 1]
    #...

演示:http://jsfiddle.net/ambiguous/U4AC5/

像其他所有代码一样,它会编译为for(i = 0; i < a.length; i += 2)循环,因此该范围不会花费您任何费用。

关于coffeescript - 从CoffeeScript中的数组获取每两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388424/

相关文章:

javascript - 如何在 CoffeeScript 中将两个匿名函数作为参数传递?

css - Coffeescript Dashing 小部件背景色

javascript - 如何使用 jQuery 将所有相似的 id 放入数组中?

javascript - 谷歌图表工具摆脱了水平间距

javascript - 带有数组的 javascript 类是静态的

node.js - 自定义错误未在 throw 语句或 next() 调用上正确传播

ember.js - 正确的清理代码

javascript - 你会如何在定时器上做一个 for 循环?

ruby-on-rails-3.1 - 无法在 coffeescript 中呈现部分 coffeescript

javascript - CoffeeScripted Ajax 调用结果在实际成功时失败回调