다음 함수에서 코드는 숫자 대신 NaN
을 반환합니다. 이 함수는 기본적으로 strarr
에서 가져온 k
연속 문자열로 구성된 첫 번째 가장 긴 문자열의 길이를 계산합니다.Math.max 및 parseInt에서 오류가 발생했습니다.
function longestConsec(strarr, k) {
var n = strarr.length;
if(n === 0 || n < k || k<=0){
return "";
}
else{
var arrI = [0,0,0,0];
var max;
for (var i = 0; i<(strarr.length - k); i++){
for(var j = i; j<(i+k); j++){
arrI[i] += strarr[j].length;
}
}
max = arrI.indexOf(Math.max(arrI));
return Math.max(arrI) //typeof(arrI[i]) for i {0,1,2,3} returns 'number' and arrI.length returns 4
}
}
console.log(longestConsec(["zone", "abigail", "theta", "form", "libe", "zas"], 2), "abigailtheta")
위 함수에서 코드는 숫자 대신 NaN을 반환합니다. 이 함수는 기본적으로 배열 - strarr에서 취해진 k 개의 연속 문자열로 구성된 첫 번째 가장 긴 문자열의 길이를 계산합니다. 하지만 return Math.max(parseInt(arrI))
을 사용하여 return Math.max(arrI)
줄을 바꾸면 코드가 올바르게 작동합니다.
제 질문은 그것이 중요하지 않다는 것입니다. 왜냐하면 arrI
은 숫자가 아닌 문자열이지만 분명히 그렇기 때문입니다. 왜?