-2

リスト内包表記を使用して、CoffeeScriptの古典的な本「JavaScript:TheGoodParts」の例を書き直そうとしています。

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
4

2 に答える 2

3

私はあなたがこのようなことをしようとしていると想像します

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]
于 2012-10-08T17:30:42.773 に答える
1

誰かが実際にここに来て、2 つの配列を同時に反復処理する必要がある場合、これは機能します。

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

zip()ここからです:

zip = () ->
  lengthArray = (arr.length for arr in arguments)
  length = Math.min(lengthArray...)
  for i in [0...length]
    arr[i] for arr in arguments
于 2015-09-30T14:48:23.970 に答える