【问题标题】:how can you find the min number in this function in javascript [closed]你怎么能在javascript中找到这个函数中的最小值[关闭]
【发布时间】:2014-10-23 14:40:18
【问题描述】:

如何在这样的函数中找到最小值或最大值 {"a",5,"h",7,true,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));

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

【问题讨论】:

标签: javascript arrays function arguments


【解决方案1】:

甜美简单:`

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)

【讨论】:

    【解决方案2】:

    首先为每个元素检查if (typeof element== "number"),然后检查此以找到最小JavaScript: min & max Array values?

    【讨论】:

    • 如果问题是通过链接到另一个问题的答案来回答的,请将此问题标记为重复而不是回答。
    • 我用这个链接回答了部分问题,否则你是完全正确的。
    【解决方案3】:

    您可以在数组上应用reduce函数来找到最小值和最大值。

    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

    【讨论】:

      【解决方案4】:
        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); }));
        }
      

      【讨论】:

        【解决方案5】:

        其实很简单。

        只需将其放入循环中即可:

        Math.min(x, y); 
        

        循环遍历所有元素并保持一个变量最低以保持最低的那个。比较所有元素后,您的最小数字将由变量保存。

        判断是否为数字:

        isFinite(String(foo).trim() || NaN)
        

        最后,如果您对这个过程感到困惑,请查找“线性搜索”。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-28
          • 1970-01-01
          • 2022-01-24
          相关资源
          最近更新 更多