我目前正在处理coderbytes中的问题。我应该创建一个函数,它接受一个字符串并返回字符串中最长的单词(字符串中没有标点符号,如果有两个相同大小的单词,则该函数应返回第一个单词)。我能够找到类似的问题Find the longest word/string in an array,但由于某种原因,我的代码无效。
var longestword = function(string){
var longest = [];
array = string.split(" ");
for(var i = 0; i <= array.length; i++){
if(array[i].length > longest.length){
longest = array[i];
}
}
console.log(longest)
}
longestword("This isnt workin for some reason")
我得到的错误是TypeError: array[i] is undefined
答案 0 :(得分:4)
您的条件是i <= array.length
,但是数组索引(对于像这样的非稀疏数组)是0
到array.length - 1
。只需使用<
,而不是<=
。当undefined
为array[i]
时,您i
获得array.length
,因为那里没有元素。
无关,但是:您的代码正在成为The Horror of Implicit Globals的牺牲品,因为您从未声明array
。在var
array = string.split(" ");
答案 1 :(得分:0)
您无法访问数组[array.length]。数组是从0开始的。将&lt; =更改为&lt;。