JavaScript:查找字符串中最长的单词

14
function longestWord(string) {
    var str = string.split(" ");
    var longest = 0;
    var word = null;
    for (var i = 0; i < str.length - 1; i++) {
        if (longest < str[i].length) {
            longest = str[i].length;
            word = str[i];
        }
    }
    return word;
}
当我调用longestWord("傲慢与偏见")时,它返回的是'傲慢'而不是最长单词'偏见'...为什么? 我查看了一些类似的问题,但解决方案看起来很像我的代码。

8
不要将字符串数组命名为"str"。 - aaronman
33个回答

0

谢谢大家,这是修复后的代码:

function longestWord(string) {
    var str = string.split(" ");
    var longest = 0;
    var word = null;
    for (var i = 0; i < str.length; i++) {
        var checkedLetters = "";
        for (var j = 0; j < str[i].length; j++) {
            if (/[a-zA-Z]/.test(str[i][j])) {
                checkedLetters += str[i][j];
            }
        if (longest < checkedLetters.length) {
            longest = checkedLetters.length;
            word = checkedLetters;
            }
        }
    }
    return word;
}

0
以上的解决方案并不完整。如果有两个或更多的单词长度相同怎么办?这里有一个更好的解决方案:
longest = str => {
  let words = str.split(" ");
  let size = 0;
  let max = [""];

  for (let i = 0; i < words.length; i++) {
    if (words[i].length > size) {
      size = words[i].length;
    }
    if (max[max.length - 1].length < words[i].length) {
      max = [];
      max.push(words[i]);
    } else {
      max = [...max, words[i]];
    }
  }
  return max;
};

0

这似乎是最简单的方法。

function longestWord(string) {
    var str = string.split(" ");
    var longest = 0;
    var word = null;

    str.forEach(function(str) {
        if (longest < str.length) {
            longest = str.length;
            word = str;
        }
    });

return word;

}


0

function sortNumber(a, b) {
return a - b;
}

function findLongestWordLength(str) {
var split = str.split(" ");
var arr=[];
for(var i=0;i<split.length;i++){
  arr.push(split[i].length);
  }
  arr.sort(sortNumber);
  console.log(arr[arr.length-1]);
  return(arr[arr.length-1]);
}

findLongestWordLength("What if we try a super-long word such as otorhinolaryngology");


0

const longestWord = string =>
{
    stringArray = string.split(' ').sort(
        (a,b) => b.length - a.length)
    let longestArray= stringArray.filter( word => word.length === stringArray[0].length ) 
    if(longestArray.length === 1){
        console.log(longestArray[0])
    }
    else
    {
        console.log(longestArray)
    }
}
longestWord("Pride and Prejudice")


0

这里还有另一种解决方法。

function findLongestWord(str) {
  var result = [];
  
  var one = str.split(" ");
    
   for (var i = 0; i < one.length; i++) {
    result[i] = one[i].length;
     result.reverse().sort(function(a,b) {
       return b-a;
     });   
   }
  return result[0];
}


0

下面的代码将从字符串中查找最长的单词及其长度。 代码使用纯 JavaScript 和 HTML。

function findLongestWord() {
  var str = document.getElementById('inputText').value;
  calculateLength(str);
}

function calculateLength(str) {
  var substring = str.split(" ");
  var minChar = '';
  for (var i = 0; i <= substring.length - 1; i++) {
    if (substring[i].length >= minChar.length) {
      minChar = substring[i];
    }
  }
  document.getElementById('longChar').innerHTML = 'Longest Word: ' + minChar;
  document.getElementById('longCharLength').innerHTML = 'Longest Word length: ' + minChar.length;
}
<!doctype html>
<html lang="en">

<head>
</head>

<body>
  <input type="text" id="inputText"> <br/>
  <button onclick=findLongestWord()>Click to find longest              word</button> <br/>
  <div id="longChar"></div> <br/>
  <div id="longCharLength"></div>
</body>
<script src="longestWord.js"></script>

</html>


0

快速而简单的方法是

let str = "This is longest word";
let longestWord ="";
str.trim().split(" ").map(word=> (word.length > longestWord.length) ? 
longestWord = word : longestWord)
console.log(longestWord)

它还会处理字符串开头和结尾的额外空格。

0

我认为这更容易

function findLongestWord(str) {
    var longestStr = 0;
    for (var x=0;x<str.split(' ').length;x++){
        if (longestStr < str.split(' ')[x].length){
            longestStr = str.split(' ')[x].length;
        }
    }
    return longestStr;
}

0
// My simple solution.

const findLongestWordLength = str => {
    let array = str.split(" ");
    let longest = 0;

    array.map(e => {
        if (e.length > longest) {
            longest = e.length;
        }
    })
    return longest;
}

1
请提供一些详细描述。 - Farbod Ahmadian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接