2012-07-09 97 views
6

我想使用數組中的每對條目。有沒有一種有效的方法可以在不使用數組的length屬性的情況下在CoffeeScript中執行此操作?在CoffeeScript中獲取數組中的每兩個元素

我目前在做類似如下:

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

回答

14

的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)像所有的休息這樣做的範圍不花一分錢

+1

非常豐富。如果您充分發揮它的潛力,CoffeeScript就是這樣一種美麗的語言。 – 2014-04-05 16:56:03

相關問題