在一个字符串中找到最长的单词

3

目前我正在尝试找到一个字符串中最长的单词,我的研究已经有了一些进展。我在SO上找到了一段代码,可以显示最长单词中字母的数量。

例如:

function longest(str) {
  var words = str.split(' ');
  var longest = 0;

  for (var i=0;i<words.length;i++) {
    if (words[i].length > longest) {
      longest = words[i].length;
    }
  }
  return longest;
}
longest("This is Andela");

//This returns 6

如何编辑此代码,使其返回单词而不是字母数。也就是说

//Returns Andela instead of 6

考虑到我也是JavaScript的新手

3个回答

3

There you go:

function longest(str) {
  var words = str.split(' ');
  var longest = ''; // changed

  for (var i = 0; i < words.length; i++) {
    if (words[i].length > longest.length) { // changed
      longest = words[i]; // changed
    }
  }
  return longest;
}
console.log(longest("This is Andela"));


2
我认为最简单的解决方案是将数组分割、按长度排序,然后选择数组的第一个元素。
function longest(str) { 

 var arr = str.split(" ");

 var sorted = arr.sort(function (a,b) {return b.length > a.length;});

return sorted[0];

}

如果您想要长度,只需添加 .length 以返回 sorted[0]。

需要测试字符串 str 是否为未定义、空或不包含空格 ;) - boly38

1
我建议采用这种方法:
function LongestWord(text) {
    return text
      .split(/\s+/g)
      .reduce(function (record, word) {
        if (word.length > record.length) {                  
          record = word;
        }
        return record;
      }, '');
}
console.log(LongestWord('In this sentence it is not obvious which is the longest word.'));

如果您想返回最长单词的长度,只需在return结尾处添加.length。

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