2011-11-04 3 views
-1

JS를 사용하여 배열에서 URL을 추출하려고하는데 코드가 아무 것도 반환하지 않는 것 같습니다.배열에서 URL을 추출하는 함수를 작성하는 데 어려움이 있습니다.

도움을 주시면 감사하겠습니다.

var pages = [ 
    "www.facebook.com|Facebook", 
    "www.twitter.com|Twitter", 
    "www.google.co.uk|Google" 
    ]; 

function url1_m1(pages, pattern) { 
    var URL = '' // variable ready to accept URL 
    for (var i = 0; i < pages[i].length; i++) { 
     // for each character in the chosen page 
     if (pages[i].substr(i, 4) == "www.") { 
      // check to see if a URL is there 
      while (pages[i].substr(i, 1) != "|") { 
       // if so then lets assemble the URL up to the colon 
       URL = URL + pages[i].substr(i, 1); 
       i++; 
      } 
     } 
    } 
    return (URL); 
    // let the user know the result 
} 
alert(url1_m1(pages, "twitter")); // should return www.twitter.com 
+0

를 사용할 수 있습니다 정확히 무엇인지? –

+0

죄송합니다. 오타가되었습니다. 코드를 업데이트했습니다! – Johnny

+0

아야! 코드에 버그가 가득 찼습니다. 다른 것을 시도하기 전에 루프를 올바르게 실행하는 법을 배우십시오! –

답변

3

귀하의 경우에는이를 사용할 수 있습니다

var page = "www.facebook.com|Facebook"; 
alert(page.match(/^[^|]+/)[0]); 

here


그것은 사용 정규식 단지 예를 들어 위의 볼 수 있습니다. 전체 코드는 다음과 같습니다

var pages = [ 
    "www.facebook.com|Facebook", 
    "www.twitter.com|Twitter", 
    "www.google.co.uk|Google" 
]; 

var parseUrl = function(url){ 
    return url.match(/^(www\.[^|]+)+/)[0]; 
}; 

var getUrl = function(param){ 
    param = param.toLowerCase(); 
    var page = _(pages).detect(function(page){ 
    return page.toLowerCase().search(param)+1 !== 0; 
    }); 
    return parseUrl(page); 
}; 

alert(getUrl('twitter')); 

당신은 내 코드에서 그것을 here

을 테스트 할 수 있습니다 내가 Underscore 라이브러리를 사용하고 있습니다. 표준 for 또는 while 루프로 대체하여 일부 배열 항목을 찾을 수 있습니다. 그리고 물론 일부 검증 (예 : 정의되지 않은 값 또는 배열의 값이 잘못되었거나 다른 경우)으로 코드를 향상시킬 수 있습니다.

행운을 빈다.

0

임 없습니다 당신이하려고하는,하지만 당신은`pattern` 함수에서 사용되지 않는 분할() 함수

var pair = pages[i].split("|"); 
var url = pair[0], title=pair[1]; 
관련 문제