如何在javascript中找到此函数中的最小数量

时间:2014-08-29 14:48:06

标签: javascript arrays function arguments

如何在这样的函数中找到最小或最大数字 { “一”,如图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));

现在如果第一个索引不是数字怎么办。

5 个答案:

答案 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将包含Infinitymax将包含-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)

最后,如果这个过程混淆了你,请查看“线性搜索”。

线性搜索:http://en.wikipedia.org/wiki/Linear_search