我见过很多解决方案,而不是我试图解决的问题。 - 我试图在空格处打破字符串并将所有单词存储在变量字中。 我用循环来计算每个单词中的字母,然后逐个地将每个单词存储在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");
答案 0 :(得分:5)
使用ES6语法,您可以按照以下方式执行此操作:
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;
或者,您可以使用原生forEach()
和sort()
方法实现此目的:
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;
使用资源:
答案 1 :(得分:2)
for
循环不应迭代到word.length
,因为数组具有从0开始的索引;将<
替换为<=
以迭代到word.length - 1
。将.apply()
与Math.max()
一起使用,不希望将数组作为Math
设置为this
的参数传递。 console.log()
语句后return
将无法运行。
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;