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

时间:2015-06-24 21:09:00

标签: javascript string

我正在尝试找到字符串中最长的单词,但它会不断返回第一个单词的长度。有什么想法吗?

这是我的代码:

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;
  }
}

10 个答案:

答案 0 :(得分:9)

你的return语句应该在for循环之外。 它只执行第一个循环然后退出。

答案 1 :(得分:4)

我是这样做的(我附上一个注释的长版本和一个未注释的短版本):

 /***************
 * 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;
}

答案 2 :(得分:1)

你的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;
}

答案 3 :(得分:1)

你的回复陈述是在错误的地方,正如mccainz所说,但如果你想要返回实际的词,你也应该保存这个词。

double value

答案 4 :(得分:1)

这是一种功能性方法:

&#13;
&#13;
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
&#13;
&#13;
&#13;

答案 5 :(得分:1)

我会做这样的事情:

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

答案 6 :(得分:0)

这就是我试图解决的问题:

$.ajax({
      url: url,
      type: "POST",
      dataType: 'json',
      data: formData,
      processData: false,
      contentType: false,
      success: function (data) {

      }
});

答案 7 :(得分:0)

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');

答案 8 :(得分:0)

这是我如何做到的。

button.setAttribute('index',i);
var thisIndex= button.getAttribute(this.index);
button.setAttribute('onclick','getProductInfo('+thisIndex+'))';

答案 9 :(得分:0)

尝试使用以下代码示例:

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");