簡體   English   中英

使用javascript查找字符串中最長的單詞

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

我試圖找到字符串中最長的單詞,但它不斷返回第一個單詞的長度。 有任何想法嗎?

這是我的代碼:

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

您的 return 語句應該在 for 循環之外。 它只執行第一個循環然后退出。

這是我是如何做到的(我附上了一個評論的長版和一個未評論的短版):

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

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

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

這是一個函數式方法:

 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

我會做這樣的事情:

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

這就是我試圖解決它的方式:

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

這是我如何做到的。

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

}

嘗試使用以下代碼示例:

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