获取数组最大值

Posted asker_wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取数组最大值相关的知识,希望对你有一定的参考价值。

var ary = [12,23,34,24,35,14,25,36]

        //1、排序法:从小到大排序,然后选择最后一个为最大
        ary.sort(function(a,b){
            return a-b;
        })
        var min = ary[0];
        var max = ary[ary.length - 1];
        console.log(min,max)
        /*
          2、假设法:假设当前数组中的第一个值是最大值,然后拿这个值和后面的项逐一进行比较,如果后面某一项比假设的还要大,说明假设错了,我们把假设的值进行替换
          和自定义属性一样,都是JS中最常用的编程思想
        */
        var max = ary[0];
        for(var i = 0;i<ary.length;i++){
            var cur = ary[i];
            cur>max?max = cur:null;
        }
        //3、使用Math中的max/min方法实现,以下代码实现不了
        console.log(Math.min(12,23,34,24,35,14,25,36));
        //它是在执行的时候,把需要比较的那堆数一个个的传递进来,这样才可以得到最后的结果,一下放一个ary数组进来是不可以的
        //第一次尝试
        Math.min([12,23,34,24,35,14,25,36])
        //join/toString ->"12,23,34,24,35,14,25,36"
        //eval:把一个字符串变为JS表达式执行
        //eval("12,23,34,24,35,14,25,36") 结果只会是最后一项 这里就涉及一个括号表达式的概念
        //第二次尝试
        "Math.max("+ary.toString()+")"//‘Math.max(12,23,34,24,35,14,25,36)‘ 首先不要管其他的,先把我们最后要执行的代码都变成字符串,然后把数组中的每一项的值分别的拼接到这个字符串中
        var max = eval("Math.max("+ary.toString()+")")// 这个才是正解
        function fn1(){
            console.log(1)
        }
        function fn2(){
            console.log(2)
        }
        var obj = {name:‘李四‘,fn:fn2}
        ;(fn1,fn2)();//只有fn2执行了->(x1,x2,x3...)括号表达式,一个括号中出现多项内容,中间用","隔开,但是我们最后获取到的结果只有最后一项
        (fn2,obj.fn)();//执行的是obj.fn,但是执行的时候最后的this是window而不是obj
        (obj.fn)()// this 还是obj
        
        //apply方法
        var max = Math.max.apply(null,ary);

 

以上是关于获取数组最大值的主要内容,如果未能解决你的问题,请参考以下文章

NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段

18个常用的JavaScript片段分享

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

如何获取数组的最小值,最大值? [复制]

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)