【问题标题】:How do you use the split() method on array values in Javascript?如何在 Javascript 中对数组值使用 split() 方法?
【发布时间】:2016-04-14 03:01:12
【问题描述】:

我正在尝试从网页中获取所有链接,对这些链接进行排序,使用关键字查找链接,然后将带有关键字的链接打印到控制台。我正在使用 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() 吗?

【问题讨论】:

  • 请将代码放在这里,不要放在远程链接上。我们需要看看arrCopy的元素是什么。它显然不是你说的 URL 数组,答案说它是 DOM 元素的数组。
  • @Barmar 是的,我明白现在出了什么问题(我想我的基础有点欠缺)。但是,我不愿意发布带有问题的完整代码,因为它相当冗长。
  • 你应该发一个MCVE
  • @Barmar 顺便说一句,这就是我想要做的——那是一个更大的程序(约 1k 行)的精简版本。我不知道我使用数组的方式出了什么问题,所以我保留了所有操纵它的东西。

标签: javascript arrays string split


【解决方案1】:

问题是您正在循环遍历一个元素数组,然后将这些元素添加到一个数组中。

因此,在您尝试执行var tempStringArr = arrCopy[0]; 时,您实际上是在抓取anchor(a) 元素。

因此,要使您的代码正常工作,您可以这样做:

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

或者:

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,以便您现在可以看到它正在运行。

【讨论】:

  • 谢谢你解释得这么好!我是 Javascript 新手,我认为我在理解上存在差距,导致我在使用 split() 时感到困惑。我花了几天时间试图弄清楚这一点。
  • 没问题,这样的网站可以提供帮助,像所有回答的人一样的人都在这里提供帮助。
【解决方案2】:

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

var tempStringArr = arrCopy[0].href;

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      parseHTMLForLinks 返回锚元素数组,你可能需要从锚元素中获取 url,如果你想要链接的 href 属性,你可以在 printList 中替换这个 sn-p 并尝试:

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

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

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

      【讨论】:

        【解决方案5】:

        在拆分之前将其转换为字符串

        // added the code below at line 53
        var t = [];
        alert(t.length)
        t = arrCopy[0].toString().split("/")
        alert(t.length); // alerts 4
        

        【讨论】:

          猜你喜欢
          • 2018-04-12
          • 2013-01-24
          • 2021-12-14
          • 1970-01-01
          • 2020-01-05
          • 1970-01-01
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多