2011-11-04 36 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];