2014-09-09 5 views
0

저는 현재 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

자바 스크립트이므로 변수를 선언 할 필요가 없습니다. 세 번째 줄에 할당되면 정의됩니다. – BadZen

+1

당신은 아마도 "<="을 사용하여 teh for() 루프에서 비교를하고 있기 때문에 에러가 발생했을 것입니다. 길이가 9이고 어레이가 8에서 정지한다고 가정합니다 (0이 아닌 1에서 시작하기 때문에). 오류의 경우 user3916429

답변

4

귀하의 조건이 i <= array.length이지만, (이와 같은 비 스파 스 배열) 배열 인덱스 array.length - 1 통해 0입니다입니다. <만을 사용하고 <=이 아닌을 사용하십시오. iarray.length 일 때 에 대해 undefined이 표시됩니다. 요소가 없기 때문입니다.


관련없는,하지만 : 당신이 array을 선언하지 않기 때문에 귀하의 코드가 The Horror of Implicit Globals에 먹이를 떨어지고있다. 앞에 var을 추가하십시오. array = string.split(" ");

+0

당신의 도움에 감사드립니다 – theamateurdataanalyst

0

[array.length] 배열에 액세스 할 수 없습니다. 배열은 0부터 시작합니다. < =을 <으로 변경하십시오.

+3

* "배열 [array.length]"에 접근 할 수 없습니다 * 글쎄, 당신 * can * (JavaScript!),하지만 당신은'undefined'를 얻을 것이다. ;-) –

+0

@ T.J. 진실.... – BadZen

관련 문제