[英]Find the Longest Word in a String javascript
我的代碼可以很好地處理像“The quick brown fox jumped over the lazy dog”這樣的字符串。
但不適用於像“谷歌做一個桶滾”這樣的字符串。
它說問題是“未定義的 TypeError 不是對象(評估 'Astr[i].length')”。
function findLongestWord(str) { var Astr = str.split(" "); var t = Astr[0].length; var Al = Astr.length; var j = 0; for(var i =1; i < t;i++) { if(t < Astr[i].length) { t = Astr[i].length; j = i; } } str = Astr[j]; return str.length; } findLongestWord("Google do a barrel roll");
您的“for”循環中的變量有問題。
如您所見,您拆分數組並獲得數組中第一個成員的長度 所以基本上您獲得的是第一個字長而不是字數
var Astr = str.split(" ");
var t = Astr[0].length;
在這里您可以看到您使用“t”(第一個字長)作為循環邊界。
for(var i =1; i < t;i++)
保持你的代碼簡單易讀,這樣它就可以維護了。
function findLongestWord(str) {
var words = str.split(" ");
var words_count = words.length;
var longest_word_length = 0;
for(var i = 0; i < words_count; i++){
if(longest_word_length < words[i].length){
longest_word_length = words[i].length;
}
}
return longest_word_length;
}
findLongestWord("Google do a barrel roll");
請注意,您始終可以為此使用速記函數
function findLongestWord(str) {
return str.split(' ').reduce(function(longest, cur) {
return (cur.length > longest.length) ? cur : longest;
}, '').length;
}
findLongestWord("Google do a barrel roll");
這是改進功能的一種方法:
var str = 'Google do a barrel roll';
function findLongestWord(str) {
var Astr = str.split(' ');
if (!Astr.length) {
throw new Error('findLongestWord(): no words in str');
}
var t = Astr[0].length;
var Al = Astr.length;
var j = 0;
for(var i = 0; i < Al; i++)
{
if(t < Astr[i].length)
{
t = Astr[i].length;
j = i;
}
}
str = Astr[j];
return str.length;
}
findLongestWord(str);
//=> 6
你也可以做這樣的事情(這更容易理解):
str.split(' ').reduce(function(longest, cur) {
return (cur.length > longest.length) ? cur : longest;
}, '');
//=> Google
function findLongestWord(str)
{var arr=[];
arr=str.split(' ');
arr=arr.sort(function(a,b)
{
return b.length-a.length; /*sorting the array in decending order of
lengths of each word*/
});
var st=arr[0]; /* obviously the first element of the array will
have longest length.*/
return st.length;
}
findLongestWord("Google do a barrel roll");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.