将i from循环与下一个值进行比较

comparing the i from loop with the next value

本文关键字:比较 下一个 from 循环      更新时间:2024-03-25

我正试图编写一个小程序,用javascript返回句子中最长的单词,我只是不明白为什么会不断出现以下错误消息:"TypeError:sen_arr[(i+1)]未定义。"

function LongestWord(sen) { 
var sen_arr = sen.split(" ");
for (var i = 0 ; i < sen_arr.length; i++ ) { 
   var longest = sen_arr[i];
   if (sen_arr[i].length >= sen_arr[i + 1].length) {
        longest = sen_arr[i + 1];
    } else {
        longest = sen_arr[i];
    }
 } 
return longest; 
}
LongestWord("Argument goes here");

如果定义了sen_arr,定义了i,那么为什么没有定义sen_arr[i+1]呢?

Ps:我只是一个新手,如果我的逻辑或算法错误,请纠正我。

首先,获取最长单词的逻辑是不正确的。此外,您应该在for loop之外声明var longest,否则,它将在下一次循环时初始化新值。你得到了未定义的is,因为数组键is在sen_arr中不存在,因为你使用+1,所以如果i是2,就会变成3。这就是你得到未定义错误的原因。

拆分后的sen_arr[0=>Argument,1=>goes,2=>here]//密钥3不存在

[功能1]

function LongestWord(sen) { 
var sen_arr = sen.split(" ");
var longest;//declare here
for (var i = 0 ; i < sen_arr.length; i++ ) { 
   /*var*/ longest = sen_arr[i]; //shouldn't declare here
   (i < 2) ?  j = i+1 : j = i;   //do +1 if i is less than 2 
   if (sen_arr[i].length >= sen_arr[j].length) {
        longest = sen_arr[j];
    } else {
        longest = sen_arr[i];
    }
 } 
return longest; 
}

[功能2]

function LongestWord(sen) { 
   var sen_arr = sen.split(" "),longest = 0,index;
   for (var i = 0 ; i < sen_arr.length; i++ ) {    
    if(longest < sen_arr[i].length) {
      longest = sen_arr[i].length;
      index = i;
    }  
 }  
 longest = sen_arr[index];
 return longest;     
}
LongestWord("Argument goes here");          //return Argument
LongestWord("Argument goes hereherheherhe");//return hereherheherhe

注意:函数1不适合获得最长单词,但函数2是正确的

句子中最长的单词

function longWord(senten){
      var arraysize = senten.split(" ");
        console.log(arraysize.length);
       var arr=[];
      for(let i = 0;i<arraysize.length;i++){
        arr.push(arraysize[i].length);
        }
      console.log(arr);
      console.log(Math.max.apply(null, arr)); 
        var final;
        for(let i = 0;i<arr.length;i++){
         if(Math.max.apply(null, arr)==arr[i]){
           final = arraysize[i];
         }
        }
       return final;
    }
    console.log(longWord("How are u friends welcome to javascript Program"));