找到数组中最长的单词

时间:2014-09-09 04:23:46

标签: javascript arrays string

我目前正在处理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

2 个答案:

答案 0 :(得分:4)

您的条件是i <= array.length,但是数组索引(对于像这样的非稀疏数组)是0array.length - 1。只需使用<,而不是<=。当undefinedarray[i]时,您i获得array.length,因为那里没有元素。


无关,但是:您的代码正在成为The Horror of Implicit Globals的牺牲品,因为您从未声明array。在var

前添加array = string.split(" ");

答案 1 :(得分:0)

您无法访问数组[array.length]。数组是从0开始的。将&lt; =更改为&lt;。