你如何在Javascript中对数组值使用split()方法?

时间:2016-04-14 03:01:13

标签: javascript arrays string split

我正在尝试从网页抓取所有链接,对这些链接进行排序,使用关键字查找链接,并将列表中的关键字打印到控制台。我使用split()方法查找关键字的链接,但是,当我的硬编码字符串将正确拆分时,当我尝试从数组中拆分值时,相同的代码将无法工作。

我有一个URLS(arrCopy)数组,我想在第一个数组值上使用split()。但是,我无法使用下面的代码来使用它。

//arrCopy is an array of strings (URLs)
var tempStringArr = arrCopy[0]; //get first URL from arr
var tempStringSplit = tempStringArr.split("/"); //doesn't work!

如果我将URL硬编码为字符串,则相同的代码可以正常工作。

//this code works
var exampleString = "http://bit.do/contact.php?layout=js.do"; //hardcoded string
var exampleStringSplit = exampleString.split("/");   //array created from exampleString

我的完整代码演示了上述示例:http://js.do/gloss/90965

我已经注释掉了不起作用的代码。

如何让split()方法处理数组值?我只是错误地使用split()?

5 个答案:

答案 0 :(得分:3)

问题在于你循环遍历一个元素数组,然后在数组中添加这些元素。

因此,在您尝试var tempStringArr = arrCopy[0];时,您实际上正在抓住锚(a)元素。

因此,为了使您的代码有效,您可以这样做:

var tempStringArr = arrCopy[0].href; //Get the href from the element.

OR:

var tempStringSplit = tempStringArr.href.split("/"); //doesn't work! //added .href

http://js.do/gborbonus/gets-and-prints-sorted-list-of-links-then-splits-each-link

我已经添加了一个js.do,所以你可以看到它正在运行。

答案 1 :(得分:1)

这是因为你在arrCopy中构建的数组是一个元素数组。因此,当您进行拆分时,您尝试在html元素而不是字符串上执行此操作。试试这个:

var tempStringArr = arrCopy[0].href;

答案 2 :(得分:0)

您是否尝试过使用字符串函数? var tempStringSplit = String(arrCopy[0]).split("/");

答案 3 :(得分:0)

parseHTMLForLinks返回锚元素数组,您可能需要从锚元素中获取URL,如果您想要链接的href属性,可以在printList中替换此片段并尝试:

for (var i=0, j=arr.length; i<j; i++) { //make copy of links from HTML DOM
    arrCopy[i] = arr[i].href;
}

如果你想要来自innerHTML的网址,你可以试试这个:

for (var i=0, j=arr.length; i<j; i++) { //make copy of links from HTML DOM
    arrCopy[i] = arr[i].innerHTML;
}

答案 4 :(得分:0)

在拆分

之前将其转换为字符串
// added the code below at line 53
var t = [];
alert(t.length)
t = arrCopy[0].toString().split("/")
alert(t.length); // alerts 4