0
我想定義一個函數,我可以使用該函數來查找句子中最長的單詞。使用下面的邏輯,我仍然不明白爲什麼它的輸出是不正確的。可以對此功能進行哪些調整以獲得有效的功能
function longest_word(string){
string=string.toLowerCase();
list=string.split(' ') ;
var i=0;
var j=1;
while (i<list.length){
if (list[j] .length>list[i].length){
Long_word =list[j] ;
}
else {
Long_word =list [i];
}
i++;
}
return Long_word ;
}
我想測試我的功能,所以我做了以下內容:
f= 'I live in Pennsylvania new York '
console.log(longest_word (f))
returned live as the longest_word
我想了一會兒,然後注意到有我j變量中沒有增量 所以,我沒有以類似的方式如下製造Ĵ增加作爲I:
function longest_word(string){
string=string.toLowerCase();
list=string.split(' ') ;
var i=0;
var j=1;
while (i<list.length){
if (list[j] .length>list[i].length){
Long_word =list[j] ;
}
else {
Long_word =list [i];
}
i++;
j++ ; // j increases by 1
}
return Long_word ;
}
f= 'I live in Pennsylvania new York '
console.log(longest_word (f))
返回該消息
Uncaught TypeError : Cannot read property 'length' of undefined
我該如何去修復它..應該對我的代碼做些什麼調整。先謝謝你。
較短的方式:'f.split(」「)。降低(功能(ACC,VAL){返回val.length> acc.length VAL:ACC;}?)'。 – Teemu
@Teemu看起來不錯,而且很短,但不幸的是它很有問題。如果最後一個單詞是最長的單詞,或者與句子中的任何其他單詞相同,則它會將它與點一起返回。 –
@Kinduser我在OP的例子中看不到任何點。無論如何,你可以用正則表達式('/ \ b /')分割,這將解決你的「點問題」。 – Teemu