js 获取数组中的最大值和最小值

var arr = [3,12,23,18,25,33,22,30,1]

方案一: 思想 首先对数组进行排序(小 》大),第一项为最小值,最后一项为最大值

  var min;
  var max;
  arr.soft(function(a,b){return a-b;})
  min = arr[0];
  max = arr[arr.length-1];

方案二: 思想 采用Math对象里的min()方法和 max()方法,需要将比较的数一个一个的传递进来才能比较,但是可以通过以下方式转化即可;

  var min = Math.min(arr);
  console.log(min)   // NAN
  console.log(Math.min(3,12,23,18,25,33,22,30,1))   // 1
  console.log(Math.max(3,12,23,18,25,33,22,30,1))   // 33 

  var min =eval("Math.min(" +arr.toString()+")");  // 1     采用字符串拼接
  var min = eval("Math.max(" +arr.toString()+")");;  // 33

  var min = Math.min.apply(obj,arr)  // 1     利用apply方法一项一项传质的特点
  var max =Math.max.apply(obj,arr)  // 33 
``` 

  方案三: 思想 假设法: 假设第一项为最小项或者最大项,依次和后面的进行比较求得最小值或者最大值;

Array.prototype.compareVal = function(){
    if(this instanceof Array){
      var min = this[0];
      var max = this[0];
      for(var i = 0; i < this.length; i++){
        var cur = this[i];
        cur > max ? max = cur : null;
        cur < min ? min = cur : null;  
      }
      console.log("min= " +min+ ",max = " +max); // min=1 ,max = 33
    }
  }

arr.compareVal();

你可能感兴趣的:(js 获取数组中的最大值和最小值)