使用Math.min.apply时,Array.length为10就可以了
open
但是当在这种情况下数组的长度更大时,长度= 100,则val是NaN,
UPDATE !!!!
如果我将索引名称00,01,02,03 ... 99更改为0,1,2,3,4 ... 99其工作
但是对于MAth.min的索引名称是什么问题?
答案 0 :(得分:2)
在您创建阵列时,您似乎正在创建像' 01',' 02'等
这些与索引1和2不同
请参阅以下
const array1 = new Array();
const array2 = new Array();
const array3 = new Array();
array1[0] = 1;
array2['00'] = 2
array3[0] = 3
array3['00'] = 4
console.log(JSON.stringify(array1), typeof array1[0]);
console.log(JSON.stringify(array2), typeof array2[0]);
console.log(JSON.stringify(array3), typeof array3[0]);

看看array2 [0]是undefined
...现在如果你做
const array = new Array();
array['00'] = 10;
array['01'] = 9;
array['02'] = 8;
array['03'] = 7;
array['04'] = 6;
array['05'] = 5;
array['06'] = 4;
array['07'] = 3;
array['08'] = 2;
array['09'] = 1;
array['10'] = 100;
console.log(array);

查看索引10之前的所有undefined
这就是Math.min导致NaN
答案 1 :(得分:0)
您的第一个过滤器非数字值看起来您包含数组非数字值。
var filteredArr = arr.filter(function (item) {
return !isNaN(item);
});
对于数组中的min,您应该使用
Math.min.apply(Math,array.filter(n => !isNaN(n)))