求数组中的最大值最小值的要领

let ary = [1, 3, 5, 7, -2, 6, 20]
1.先升序排序,排序后,数组的第一项就是最小值
ary.sort(function(a,b){

return a - b; //升序排序(return b;降序排序)

})
let min = ary[0];
let max = ary[ary.length – 1];
//ps:也能够降序排取所由于0的第一项;

2.假想法
2.1 求最大值: 假定第一项就是最大值;

let max = ary[0];
for(let i = 1; i < ary.length ; i++ ){
    //假如第二项大于第一项,就把第二项改成最大项;以此类推
    if(ary[i] > max){
        max = ary[i];
    }
    //三元运算符:ary[i] > max ? max = ary[i] : null;
}
console.log(max);

2.2 取最小值与求最大值同理:假定第一项为最大值;
let min= ary[0];
for(let i = 1; i < ary.length ; i++ ){
    //假如第二项大于第一项,就把第二项改成最大项;以此类推
    if(ary[i] < min){
        min = ary[i];
    }
    //三元运算符:ary[i] < min ? min = ary[i] : null;
}
console.log(min);

3.Math.max()和Math.min() 要领;
Math.max() 从一堆数字中求出最大值;
Math.min() 从一堆数字中求出最小值;

思索:max 和 min要领都是吸收一个一个的参数,如今我们要求出数组中的最小值;有无什么要领;把数组变声一个一个的参数或许让max 和 min 吸收一个数组参数;
3.1 es6新增扩大运算符...对象
    let max = Math.max(...ary);
    let min = Math.min(...ary);
    console.log(max);
    console.log(min);
3.2 让 max 和 min 吸收一个数组用apply要领:
    let max = Math.max.apply(null , ary);
    let min = Math.min.apply(null,ary);
    console.log(max);
    console.log(min);

4.数组转成字符串,在运用eval()求值:

eval():作用是将字符串转变成js代码并实行;
4.1 将`Math.max(${aryStr})`传给eval();
let aryStr = ary.toString();
let max = eval(`Math.max(${aryStr})`);
let min = eval(`Math.min(${aryStr})`);
4.2 将eval(aryStr)传给Math.max和Math.min;
let aryStr = ary.toString();
let max = Math.max(eval(aryStr));
let min = Math.min(eval(aryStr));





















    原文作者:ljx罗
    原文地址: https://segmentfault.com/a/1190000019401073
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞