2012-10-08 43 views
-2

我試圖從經典的書重寫例如遍歷兩個數組「的JavaScript:好的部分」中的CoffeeScript通過列表解析:如何在CoffeeScript中

var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+) 
(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; 

var url = 「http://www.ora.com:80/goodparts?q#fragment」; 
var result = parse_url.exec(url); 
var names = ['url', 'scheme', 'slash', 'host', 'port', 'path', 'query', 'hash']; 
var blanks = '  '; 
var i; 
for (i = 0; i < names.length; i += 1) { 
    document.writeln(names[i] + ':' + 
     blanks.substring(names[i].length), result[i]); 
} 

我不能怎麼寫循環,堅持這一代碼:

console.log "#{name}: " for name in names 
+0

你讀過http://coffeescript.org/#循環? – asawyer

+0

當然,我讀過,但它並沒有幫助我。 – surganov

+0

你還沒有列出你試過的東西,遇到了什麼問題,看到了什麼錯誤,什麼都沒有。我們還可以做什麼,但指向你的文檔? – asawyer

回答

2

我想象你正在試圖做一些事情Like this

parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/ 

url = 'http://www.ora.com:80/goodparts?q#fragment' 

result = parse_url.exec(url) 

names = ['url', 'scheme', 'slash', 'host', 'port', 'path', 'query', 'hash'] 

alert "#{names[i]}: #{result[i]}" for i in [0..names.length-1] 
+0

這正是我需要的,謝謝!但是你確定你用CoffeeScript方式編寫的解決方案? – surganov

+0

@surganov我不確定你的意思是? – asawyer

1

萬一有人來這裏實際上需要在同一時間進行迭代兩個數組,這個工程:

for [course_event, remote_event] in zip(course.events, remote.events) 
    course_event.lessons = remote_event.lessons if event.lessons_need_updating 

zip()here

zip =() -> 
    lengthArray = (arr.length for arr in arguments) 
    length = Math.min(lengthArray...) 
    for i in [0...length] 
    arr[i] for arr in arguments