数组的最大值和最小值

1、排序

var arr = [12,56,25,5,82,51,22];
// 先排序
arr.sort(function (a, b) {return a-b;}); // [5,12,22,25,51,56]
// 再取第一个和最后一个为最小值和最大值
var min = arr[0];  // 5
var max = arr[arr.length - 1];  // 56

2、假设法

// 获取最大值:
var arr = [22,13,6,55,30];
// 假设第一个为最大值
var max = arr[0];
// 从第二位开始遍历数组
for(var i = 1; i < arr.length; i++) {
   var cur = arr[i];
   cur > max ? max = cur : null
}
console.log(max); // 55

// 获取最小值:
// 同上把 max改成min,再把cur > min 改成 cur < min  
var arr = [22,13,6,55,30];
var min = arr[0];
for(var i = 1; i < arr.length; i++) {
  var cur = arr[i];
  cur < min ? min = cur : null
}
console.log(min)  // 6

3、使用Math.min和Math.max

1、Math.min和Math.max的参数只能是数字或字符串类型的数字,所以使用 apply(),为Math.min和Math.max传参数 arr
2、也可以通过赋值结构方式传参

var arr = [22,13,6,55,30];
var max = Math.max.apply(null, arr);
var min = Math.min.apply(null, arr);
console.log(max, min) // 55,6

// 通过赋值结构方式传参
var arr = [22,13,6,55,30]; 
console.log(Math.max(...arr)); //55 相当于console.log(Math.max(22,13,6,55,30))
console.log(Math.min(...arr)); //6 相当于console.log(Math.min(22,13,6,55,30))

4、reduce

Array.prototype.getMax=function(){
     return this.reduce(function(init,item){
         if(init>=item){
             init=init
         }else{
             init=item
         }
         return init
     })
 }
 Array.prototype.getMin=function(){
     return this.reduce(function(init,item){
         if(init <= item){
             init=init
         }else{
             init=item
         }
         return init
     })
 }

5、排序算法

// 使用排序算法 把数组升序排列

 Array.prototype.getMaxAndMin=function(){
     var len=this.length;
     for(var i=0; i<len-1;i++){
         for(var j=0;j<len-i-1;j++){
             if(this[j]>this[j+1]){
                 var temp=this[j];
                 this[j]=this[j+1];
                 this[j+1]=temp;
             }
         }
     }
     const max = this[this.length-1]-0
     const min = this[0]-0
     return [ max , min ]
 }

参考文档1
参考文档2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值