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

从CoffeeScript中的数组中获取每两个元素,coffeescript,Coffeescript,我想使用数组中的每一对条目。在CoffeeScript中有没有一种有效的方法可以在不使用数组的length属性的情况下执行此操作 我目前正在做如下工作: # arr is an array for i in [0...arr.length] first = arr[i] second = arr[++i] CoffeeScript用于调整正常循环的步长。因此,在第2步中迭代数组,并使用索引获取元素: a = [ 1, 2, 3, 4 ] for e, i in a by 2

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

我目前正在做如下工作:

# arr is an array
for i in [0...arr.length]
    first = arr[i]
    second = arr[++i]
CoffeeScript用于调整正常
循环的步长。因此,在第2步中迭代数组,并使用索引获取元素:

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

如果需要,可以在循环中使用与数组切片相结合的非结构化赋值:

a = [ 'a', 'b', 'c', 'd' ]
for e, i in a by 2
    [first, second] = a[i .. i + 1]
    #...
演示:

也可以跳过忽略的变量并使用范围循环:

# three dots, not two
for i in [0 ... a.length] by 2
    [first, second] = a[i .. i + 1]
    #...
演示:


这将编译成一个
for(i=0;i
循环,就像所有其他循环一样,因此该范围不会花费任何成本。​

信息量很大。如果你充分利用咖啡脚本的潜力,它是一种非常美丽的语言。