简体   繁体   English

使用javascript查找字符串中最长的单词

[英]Find the longest word in a string using javascript

I'm trying to find the longest word in a string, but it continually returns the length of the first word.我试图找到字符串中最长的单词,但它不断返回第一个单词的长度。 Any ideas?有任何想法吗?

Here's my code:这是我的代码:

function findLongestWord(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;
  }
}

Your return statement should be outside the for loop.您的 return 语句应该在 for 循环之外。 It only executes the first loop then bails out.它只执行第一个循环然后退出。

Here is how I did it (I enclose a commented long version and a uncommented short version):这是我是如何做到的(我附上了一个评论的长版和一个未评论的短版):

 /***************
 * LONG VERSION *
 ***************/
function findLongestWord(str) {
  // Create an array out of the string
  var arr = str.split(' ');

  // Sort the array from shortest to largest string
  arr = arr.sort(function(a, b) {
    return a.length-b.length;
  });
  // The longest string is now at the end of the array

  // Get the length of the longest string in the Array
  var longestString = arr.pop().length;

  // return the lenght of the longest string
  return longestString;
}

/*****************
 * SHORT VERSION *
 ****************/
function findLongestWord(str) {
  return str
    .split(' ')
    .sort(function(a, b) { return a.length-b.length; }) 
    .pop().length;
}

Your return statement is misplaced, put it after the loop :你的 return 语句放错了地方,把它放在循环之后:

function findLongestWord(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;
}

Your return statement is in the wrong place, as mccainz said, however you should also be saving the word if you want to return the actual word.正如 mccainz 所说,你的 return 语句在错误的地方,但是如果你想返回实际的单词,你也应该保存这个单词。

function findLongestWord(str) {
  var words = str.split(' ');
  var longestLength = 0;
  var longestWord;
  for (var i=0;i<words.length;i++) {
    if (words[i].length > longestLength) {
       longestLength = words[i].length;
       longestWord = words[i];
    }
  }
  return longestWord;
}

Here's a functional approach:这是一个函数式方法:

 function findLongestWord(str) { return str .replace(/[^\\w ]/g,'') //remove punctuation .split(' ') //create array .sort(function(a, b) {return a.length-b.length;}) //sort in order of word length .pop(); //pop the last element } console.log(findLongestWord('For the next 60s, we will be conducting a test.')); //conducting

I would do something like this:我会做这样的事情:

function longestWord(str){
  return str.match(/\w+/g).reduce((p,c) => p.length > c.length ? p.length:c.length);
}

This is how I attempted to solve it:这就是我试图解决它的方式:

function LongestWord(sen) { 
    var wordArray = sen.match(/\w+/gi);
    var longest = 0; 
    var word = undefined; 
  for(var i = 0; i < wordArray.length; i++){
    if(wordArray[i].length > longest){
      word = wordArray[i];
      longest = word.length;
    }
  }
  return word;      
}
function findLongestWord(str) {
  //This is what I  used to find how many characters were in the largest word
  return str
          .replace(/[^\w ]/g,'')                            
          .split(' ')                                       
          .sort(function(a, b) {return a.length-b.length;}) 
          .pop().length;                                           

}
findLongestWord('The quick brown fox jumped over the lazy dog');

here is how I did it.这是我如何做到的。

function findLongestWord(str) {
  var strArray =[];
  var numArray=[];
  var sortedNumArray=[];

  strArray = str.split(" ");

  numArray = strArray.map(function(val){return val.length;});

  sortedNumArray=numArray.sort(function(a,b){return a-b;});

  return sortedNumArray.pop();

}

Try using the following code sample:尝试使用以下代码示例:

function findLongestWord(str){
  var arr=[];
  arr=str.split(' ');
  arr=arr.sort(function(a,b){
    return b.length-a.length;
  });
  var st=arr[0];
  return st.length;
}

findLongestWord("The quick brown fox jumped over the lazy dog");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM