次の関数では、コードで数値の代わりにNaN
が返されます。この関数は基本的に配列内で取られたk
連続した文字列で構成される最初の最長文字列の長さを計算します - strarr
。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
は文字列ではなく数字の配列であるためですが、明らかにそれは問題ではありません。どうして?