Math.min.apply(数学,数组)return NaN 当 Array.length = 100
Math.min.apply(Math,Array) return NaN when Array.length = 100
当使用 Math.min.apply 并且 Array.length 为 10 时可以
getAllIndexes(arr, val) {
var indexes = [], i = -1;
while ((i = arr.indexOf(val, i+1)) != -1){
indexes.push(i);
}
return indexes;
}
arrayMinIndex(array) {
return this.getAllIndexes(array, Math.min.apply(Math,array));
}
但是当数组更大时,在这种情况下,length = 100,val 是 NaN,
更新!!!!
如果我将索引名称 00,01,02,03 ... 99 更改为 0,1,2,3,4 ... 99 它的工作
这部分我动态创建了Array,索引名是String。
但是索引名称是什么问题 MAth.min?
你的第一个过滤器非数字值看起来你包含数组非数字值。
var filteredArr = arr.filter(function (item) {
return !isNaN(item);
});
对于数组中的min,你应该使用
Math.min.apply(Math,array.filter(n => !isNaN(n)))
似乎在创建数组时,您正在创建诸如“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
的原因
当使用 Math.min.apply 并且 Array.length 为 10 时可以
getAllIndexes(arr, val) {
var indexes = [], i = -1;
while ((i = arr.indexOf(val, i+1)) != -1){
indexes.push(i);
}
return indexes;
}
arrayMinIndex(array) {
return this.getAllIndexes(array, Math.min.apply(Math,array));
}
但是当数组更大时,在这种情况下,length = 100,val 是 NaN,
更新!!!!
如果我将索引名称 00,01,02,03 ... 99 更改为 0,1,2,3,4 ... 99 它的工作
这部分我动态创建了Array,索引名是String。
但是索引名称是什么问题 MAth.min?
你的第一个过滤器非数字值看起来你包含数组非数字值。
var filteredArr = arr.filter(function (item) {
return !isNaN(item);
});
对于数组中的min,你应该使用
Math.min.apply(Math,array.filter(n => !isNaN(n)))
似乎在创建数组时,您正在创建诸如“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