我想定义一个函数,我可以用它来查找句子中最长的单词。使用下面的逻辑,我仍然不明白为什么输出不正确。
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变量没有增加 所以我做了下面的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
如何修复它...我的代码应该进行哪些调整。先感谢您。
答案 0 :(得分:1)
可以对此功能进行哪些调整以获得有效的功能?
通过详尽描述的步骤,我为您提供了有效的功能。
var sentence = 'This is a very long sentence with few words.',
arrOfWords = sentence.slice(0, -1).split(' '), //get rid of the `dot` at the end and split it
longestWord = '';
arrOfWords.forEach(function(v) { //iterate over every element
if (v.length > longestWord.length) { //check if element is longer than previous one
longestWord = v; //if so - replace it
}
})
console.log(longestWord); //show result