2012-05-23 157 views
0

JS:更優雅的CoffeeScript環

for(i=this.current.arr.length;i<this.counterLength;i++){ 
    dosomthing(); 
    dosomethingelse(); 
} 

咖啡:

i = @current.arr.length 
while i < @counterLength 
    dosomthing() 
    dosomethingelse() 
    i++ 

我知道CoffeeScript中具有很大的循環語法糖,但是我找不到寫它比這更優雅的方式。有沒有更多咖啡的方式來做到這一點?

我知道:

for currentArr in current.arr 
//and 
for currentArr, 1 in current.arr 

,但我需要開始在@currentLength而不是0

+0

你是否試圖迭代通過數組從頭到尾? A.K.A倒過來?什麼是'this.counterLength'? – Kyle

+0

我想迭代'@ currentLenght- @ current.arr.length'次。 – Fresheyeball

+0

爲什麼downvote?謹慎評論? – Fresheyeball

回答

2

[..]運算符是你在找什麼:

start = this.current.arr.length 
end = this.counterLength 
for [start...end] 
    dosomthing() 
    dosomethingelse() 

無需預定義startend,我只是用它來使代碼更清晰。請注意,如果start大於end,那麼它會倒退。

其實您需要[...]運算符,因爲您在代碼中使用了<而不是<=[...]運算符排除最後一個元素。

+0

你能把我鏈接到這個操作員的一些文檔嗎?我從來沒有聽說過它,但它看起來正確的neato! – Fresheyeball

+0

@Fresheyeball官方CoffeeScript文檔:http://coffeescript.org/#slices – freakish

+0

後續問題。除了構建循環之外,我還需要「我」嗎? – Fresheyeball