var ary=[23,34,24,12,36,14,25,30];
1、數(shù)組排序法:
給數(shù)組進(jìn)行排序(小-->大),第一個(gè)和最后一個(gè)即為所要的最大值和最小值:
ary.sort(function(a,b){
return a-b;
});
var max=ary[ary.length-1];
var min=ary[0];
2、假設(shè)法:
假設(shè)當(dāng)前數(shù)組中的第一個(gè)值是最大值,然后拿這個(gè)值和后面的項(xiàng)逐一進(jìn)行比較,如果后面某一個(gè)值比假設(shè)的還要大,說明假設(shè)錯(cuò)了,把假設(shè)的值進(jìn)行替換
var max=ary[0],min=ary[0];
for(var i=1;i<ary.length;i++){
var cur=ary[i];
cur>max?max=cur:null;
cur<min?min=cur:null;
}
3、拼接字符串方法:
var max=eval("Math.max("+ary.toString()+")");
首先不管其他的,先把最后要執(zhí)行的代碼都變?yōu)樽址缓蟀褦?shù)組中的每一項(xiàng)的值分別的拼接到這個(gè)字符串中。之后再eval()執(zhí)行(eval:把字符串轉(zhuǎn)換為JS可執(zhí)行代碼)
注意:
a、直接Math.max([23,34,24,12,36,14,25,30])的話輸出是NaN,因?yàn)镸ath.max()在執(zhí)行的時(shí)候把需要比較的那堆數(shù)一個(gè)個(gè)傳遞進(jìn)來,才可以得到結(jié)果,一下放一個(gè)ary數(shù)組是不行的
b、直接eval("23,34,24,12,36,14,25,30")也不行,只獲取到了最后一項(xiàng)值
4、用apply:
var max=Math.max.apply(null,ary);
var min=Math.min.apply(null,ary);
apply傳參是傳一個(gè)數(shù)組,但相當(dāng)于一個(gè)個(gè)傳進(jìn)來的