将i from循环与下一个值进行比较
comparing the i from loop with the next value
我正试图编写一个小程序,用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"));
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- AngularJS&JSON-从Previous&下一个对象
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 来自文档或下一个静态父级的事件委派
- angularjs移除焦点上的活动类并添加到下一个项目
- 禁用旋转木马中的下一个按钮和上一个按钮
- 当按下一个键时,请多次按下不同的键
- 正在加载下一个帖子
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 删除“;上一个“;以及“;下一个“;基于当前幻灯片
- 真正的下一个具有特定类的元素
- 如何使用javascript获取下一个/转发url
- jQuery转盘下一个元素没有滑入
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- 将i from循环与下一个值进行比较
- Javascript根据键从对象中获取值,并将其大小与下一个键进行比较