代码之家  ›  专栏  ›  技术社区  ›  phurst-so

在查找最长单词之前拆分字符串

  •  1
  • phurst-so  · 技术社区  · 7 年前

    我已经读了几个不同的职位,所以我很抱歉再次问这个问题,但似乎没有解决我的问题。

    我试图画出一个字符串中最长单词的长度,它来自HTML。

    我能得到的只是, “未捕获的TypeError:无法读取未定义的属性'split'”

    HTML:

    <p id="p">I'm looking for the longest length of a word in this sentence</p>
    <button onclick="longestWordFunc()">Click</button>
    

    JS:

    var myString = document.getElementById("p");
    
    
    function longestWordFunc(myString) {
      var stringSplit = myString.split(" ");
      var longestWord = 0;
    
      for(var i = 0; i < stringSplit.length; i++){
        if(longestWord >= stringSplit[i].length){
    
          longestWord = stringSplit[i].length;   
        }
       }
    
      return longestWord;
     }
    
    5 回复  |  直到 7 年前
        1
  •  1
  •   visibleman    7 年前

    正如Adrian所解释的,使用reduce是实现JS目标的一个很好的方法。

    但是,如果您的目标是学习一些基本的编码,那么这里有一些关于如何使当前代码正常工作的提示。

    function longestWordFunc() {
      var myString = document.getElementById("p").innerText; // Just the inner text
    
      var stringSplit = myString.split(" ");
     
      var longestWord = 0; //Index of longest word
      var longestLength=0; //Length of longest word
      for(var i = 0; i < stringSplit.length; i++){
        if(stringSplit[i].length>longestLength){ // The other way around
          longestLength = stringSplit[i].length;   
          longestWord=i;
        }
       }
      console.log(stringSplit[longestWord]);
      return stringSplit[longestWord];
     }
    <p id="p">I'm looking for the longest length of a word in this sentence</p>
    <button onclick="longestWordFunc()">Click</button></br>
        2
  •  2
  •   Adrian Brand    7 年前

    使用reduce以空字符串开始遍历数组,并在每次迭代中返回两个字符串中最长的一个。

    var myString = document.getElementById("p").innerText;
    
    
    function longestWordFunc() {
      return myString.split(" ").reduce((longest, current) => current.length > longest.length ? current : longest, '');
    }
    <p id="p">I'm looking for the longest length of a word in this sentence</p>
    <button onclick="console.log(longestWordFunc())">Click</button>
        3
  •  2
  •   Jake Stewart    7 年前

    试试这个:

     <p id="p">I'm looking for the longest length of a word in this sentence</p>
     <button onclick="longestWordFunc()">Click</button>
    

    在JS中,尝试将.innerHTML添加到myString函数的末尾。它还检查0是否大于或等于当前stringSplit元素。

     function longestWordFunc() {
         var myString = document.getElementById("p").innerHTML;
         var stringSplit = myString.split(" ");
         var longestWord = 0;
    
        for(var i in stringSplit) {
            if(longestWord <= stringSplit[i].length){
            longestWord = stringSplit[i].length;   
        }
        return longestWord;
     }
    
        4
  •  1
  •   Yosi Hammer    7 年前

    我看到一个问题和一个可能的问题。

    1. longestWord < stringSplit[i].length

    2. 也许你在定义 myString 在创建元素之前(例如,在html的头部)。这也许就是原因 未定义。一种解决方案是将定义移到函数调用中,以便 我的字符串 仅在单击按钮时定义。

      function longestWordFunc() {
        var myString = document.getElementById("p")
        var stringSplit = myString.textContent.split(" ");
        var longestWord = 0;
      
        for(var i = 0; i < stringSplit.length; i++){
          if(longestWord < stringSplit[i].length){
      
            longestWord = stringSplit[i].length;   
          }
         }
      
        return longestWord;
      }
      
        5
  •  1
  •   Eric    7 年前

    试试这个:

    var text = "I'm looking for the longest length of a word in this sentence"
    
    findLongestWord = (str) => {
      let split = str.split(" ");
      let longest = "";
      split.forEach((word) => {
        if (word.length > longest.length) {
          longest = word;
        }
      });
      return longest;
    }
    
    let longest = findLongestWord(text);
    console.log(`Longest Word: ${longest} - ${longest.length}`);

    return longest.length
    

    希望这有帮助。

    推荐文章