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 ]
}