【发布时间】:2017-09-15 17:11:22
【问题描述】:
在以下函数中,我的代码返回 NaN,而不是数字。这个函数主要计算数组中第一个最长字符串的长度,该字符串由k连续字符串组成——strarr。
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,而不是数字。
该函数主要计算数组中第一个最长的字符串的长度,该字符串由数组中的 k 个连续字符串组成 - strarr。但是如果我用return Math.max(parseInt(arrI)) 替换return Math.max(arrI) 行,那么我的代码就可以正常工作了。
我的问题是这无关紧要,因为arrI 是一个数字数组,而不是字符串,但显然它确实如此。为什么?
【问题讨论】:
标签: javascript arrays parseint