难以编写从数组中提取URL的函数

时间:2011-11-04 22:21:07

标签: javascript

我正在尝试使用JS从数组中提取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

2 个答案:

答案 0 :(得分:3)

在您的情况下,您可以使用此:

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

您可以看到此here


这只是上面使用RegExp的例子。完整的代码是:

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循环替换它以查找某个数组项。 当然,通过一些验证来改进我的代码 - 例如,对于未定义的值,或者如果数组中的值不正确或其他。

祝你好运!

答案 1 :(得分:0)

我不确定你要做什么,但你可以使用split()函数

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