如何在这样的函数中找到最小或最大数字 { “一”,如图5所示, “H”,如图7所示,真实的,如图6所示, “H”,7}。该解决方案必须适用于具有相同特性的其他类型的功能。 我设置min = arguments [0]但是如果它不是数字怎么办? 你知道我正在阅读有关函数的内容,并且我阅读了有关参数对象的内容,其中包含一个参数数组。我试过这个:
function argsMin() {
var i = 0;
var min=arguments[0];
for(i=0;i<arguments.length;i++) {
if(min>arguments[i]){
min=arguments[i];
}
}
return min;
}
document.write(argsMin(1124,562,-973,955));
现在如果第一个索引不是数字怎么办。
答案 0 :(得分:2)
甜蜜而简单:`
var arr = ["a",5,"h",7,true,6,"h",7];
var min = Math.min.apply(null, arr.filter(function(el){
return typeof el == "number";
}));
//min = 5
对于不支持过滤器的旧浏览器,使用您可以使用polyfill(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#Compatibility)
答案 1 :(得分:0)
首先检查每个元素if (typeof element== "number")
,然后选中此选项以查找分钟JavaScript: min & max Array values?
答案 2 :(得分:0)
您可以在数组上应用reduce函数来查找min和max,如下所示。
min = array.reduce(function(x,y){if (typeof y === 'number' && (y<x)) return y; return x;}, Infinity)
max = array.reduce(function(x,y){if (typeof y === 'number' && (y>x)) return y; return x;}, -Infinity)
如果数组中没有数字,min
将包含Infinity
而max
将包含-Infinity
答案 3 :(得分:0)
function minOfArray(array) {
return Math.min.apply(this, array.filter(function (a) { return !isNaN(a); }));
}
function maxOfArray(array) {
return Math.max.apply(this, array.filter(function (a) { return !isNaN(a); }));
}
答案 4 :(得分:0)
它实际上非常简单。
将其放入循环中:
Math.min(x, y);
循环遍历所有元素并将变量保持在最低位置以保持最低值。一旦比较了所有元素,您的最低数字将由变量保存。
确定它是否为数字:
isFinite(String(foo).trim() || NaN)
最后,如果这个过程混淆了你,请查看“线性搜索”。