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