【问题标题】:How to iterate two arrays in CoffeeScript如何在 CoffeeScript 中迭代两个数组
【发布时间】:2012-09-28 23:31:49
【问题描述】:

我正在尝试通过列表推导在 CoffeeScript 中重写经典书籍“JavaScript: The Good Parts”中的示例:

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

【问题讨论】:

  • 你读过coffeescript.org/#loops吗?
  • 当然我读过,但这对我没有帮助。
  • 您没有列出您尝试过的内容、遇到的问题、看到的错误,什么都没有。除了将您指向文档之外,我们还能做什么?

标签: for-loop coffeescript


【解决方案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

【讨论】:

    【解决方案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]
    

    【讨论】:

    • 这正是我所需要的,谢谢!但是您确定您的解决方案是用 CoffeeScript 方式编写的吗?
    • @surganov 我不确定你的意思是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多