可以对此功能进行哪些调整以获得有效的功能

时间:2017-03-01 16:45:58

标签: javascript function

我想定义一个函数,我可以用它来查找句子中最长的单词。使用下面的逻辑,我仍然不明白为什么输出不正确。

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 

如何修复它...我的代码应该进行哪些调整。先感谢您。

1 个答案:

答案 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