Javacript 找数组最大值或最小值
程序员文章站
2022-07-14 14:38:46
...
实例数据:
let data=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data2=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data3A=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data3B=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data4=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data5=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data6=[100,200,100,300,20,40,[400,2222],[300,-200],-20,1200]
let data7=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
let data8=[100,200,100,300,20,40,400,2000,300,-200,-20,1200]
方法1:
var max1=0;
var min1=0;
for(var i=0;i<data.length;i++){
if(max1<data[i]){
let temp;
temp=max1;
max1=data[i];
data[i]=temp;
}
}
for(var i=0;i<data.length;i++){
if(min1>data[i]){
let temp;
temp=min1;
min1=data[i];
data[i]=temp;
}
}
方法2:使用 Math 中的 max/min 方法
var max2 = Math.max.apply(null,data2);
var min2 = Math.min.apply(null,data2);
方法3:排序法,通过升序和降序然后找出第一个数
var max3 = data3A.sort(function(a,b){return b-a}); //降序排列
var min3 = data3B.sort(function(a,b){return a-b}); //升序排列
console.log("最大值:"+max3[0]);
console.log("最小值:"+min3[0]);
方法4:假设法,假设最大或者最小为无穷 for循环
var max4 = -Infinity;
var min4 = Infinity;
for (var i = 0; i < data4.length; i++) {
if (max4 < data4[i]) {
max4 = data4[i];
}
}
for (var i = 0; i < data4.length; i++) {
if (min4 > data4[i]) {
min4 = data4[i];
}
}
方法5:假设法,假设最大或者最小为无穷 for in循环
var max5=-Infinity;
var min5=Infinity;
for(index in data5){
if(data5[index]>max5){
max5=data5[index]
}
}
for(index in data5){
if(data5[index]<min5){
min5=data5[index]
}
}
方法6:使用apply将数组传入max方法中直接返回
var newdata6 = data6.join(",").split(","); //将二维数组转换一维数组
var max6 = Math.max.apply(Math,newdata6);
var min6 = Math.min.apply(Math,newdata6);
方法7:es6拓展运算符…
var max7=Math.max(...data7);
var min7=Math.min(...data7);
方法8:数组reduce方法
var max8=data8.reduce((a, b) => {
return a > b ? a : b}
)
var min8=data8.reduce((a, b) => {
return a < b ? a : b}
)
上一篇: 异或最大值
下一篇: Hive 基础知识(二)