2012-10-08 44 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