使用Math.max引用最长的单词

时间:2018-01-21 04:53:31

标签: javascript arrays

我见过很多解决方案,而不是我试图解决的问题。 - 我试图在空格处打破字符串并将所有单词存储在变量字中。 我用循环来计算每个单词中的字母,然后逐个地将每个单词存储在alphabetsInWord中,并将每个单词的长度按在数组中。循环完成后,每个单词的长度存储在称为数组的数组中。由于数组中的值是数字,所以我想在数组上应用Math.max来查找logestWord的值,但它不返回一个。我在那里有console.log语句来检查,但没有必要。有人可以帮助我如何让它工作。我认为看看这样做是否也会很有趣。

    function findLongestWord(str) {
      var word = str.split(" ");
      var array=[];
      console.log(word);
         for(i=0; i <= word.length; i++){
            var alphabetsInWord = word[i];
            array.push(alphabetsInWord.length);                 
            console.log(array);
           //console.log(Math.max(array));
         }
     var longestWord = Math.max(array);
     return longesWord;
     console.log(longestWord); 

   } 

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

2 个答案:

答案 0 :(得分:5)

使用ES6语法,您可以按照以下方式执行此操作:

&#13;
&#13;
var str = "The quick brown fox jumped over the lazy dog";

var wordLengths = str.split(" ").map(w => w.length);

const maxLength = Math.max(...wordLengths);

console.log(maxLength);
&#13;
&#13;
&#13;

或者,您可以使用原生forEach()sort()方法实现此目的:

&#13;
&#13;
var str = "The quick brown fox jumped over the lazy dog";
var words = str.split(" ");
var wordLengths = [];

words.forEach(function(word) {
  wordLengths.push(word.length);
});
wordLengths.sort(function(a, b) {
  return a - b;
});

const maxLength = wordLengths[wordLengths.length - 1];
console.log(maxLength);
&#13;
&#13;
&#13;

使用资源:

答案 1 :(得分:2)

for循环不应迭代到word.length,因为数组具有从0开始的索引;将<替换为<=以迭代到word.length - 1。将.apply()Math.max()一起使用,不希望将数组作为Math设置为this的参数传递。 console.log()语句后return将无法运行。

&#13;
&#13;
function findLongestWord(str) {
  var word = str.split(" ");
  var array = [];
  for (var i = 0; i < word.length; i++) {
    var alphabetsInWord = word[i];
    array.push(alphabetsInWord.length);
  }
  var longestWord = Math.max.apply(Math, array);
  return longestWord;
}

console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
&#13;
&#13;
&#13;