zoukankan      html  css  js  c++  java
  • 24.获取数组最大值,最小值

    var ary = [19,23,34,24,39,14,25,36]

    1.排序法:给数组进行排序(小->大),第一个和最后一个就是我们的最大和最小值

    ary.sort(function(a,b){

      return a-b;

    })

    var min = ary[0]

    var max = ary[ary.length-1]

    2.假设法:假设当前数组的第一个值是最大值,然后拿这个值和后面的项逐一比较,如果后面某一个值比假设的还大,说明假设的错了,我们把假设的值进行替换..

        和自定义属性一样,都是Js中最常用的编程思想

    var max = ary[0],min = ary[0];

    for (var i = 1;i<ary.length;i++) {

      var cur = ary[i]

      cur > max ? cur = max : null;

      cur < min ? cur = min : nul;l

    }

    3.使用Math中的max/min方法实现:它是在执行的时候把需要比较的那堆数一个个的传递进来,这样才能得到最后的结果,直接放数组是不可以的

    var min = Math.min(ary); // NaN

    console.log(Math.min(19,23,34,24,39,14,25,36)) // 14

    "Math.max(" + ary.toString() + ")" // "Math.max(19,23,34,14,25,36)"  首先不要管其他的,先把我们最后要执行的代码变为字符串,然后把数组中的每一项的值分别的拼接到这个字符串中

    方法一:

    var max = eval( "Math.max(" + ary.toString() + ")"  )

    var min = eval( "Math.min(" + ary.toString() + ")"  )

    方法二:

    var max = Math.max.apply(null, ary);

    var min = Math.min.apply(null, ary);

    console.log(min,max)

    补充知识点:

    1.eval() 把一个字符串变为JS表达式执行

      eval("12+23+34+45") // -> 114

    2.括号表达式

      function fn1() { console.log(1) }

      function fn2() { console.log(2) }

      var obj = {name:"张三",fn:fn2}

      ~(fn1,fn2)() // ->2 只有fn2执行了 -》(x1,x2,x3...)括号表达式,一个括号中出现多项内容,中间用“,”隔开,但是我们最后获取到的结果只有最后一项

      ~(fn2,obj.fn)(); // 执行的是obj.fn,但是执行的时候里面的this变为了window而不是obj

      ~(obj.fn)() // this->obj 如果只有一项this是不变的

  • 相关阅读:
    洛谷1509 找啊找啊找GF
    要怎样努力,才能成为很厉害的人?
    随笔
    2018NOIP模拟题 曲线
    洛谷4147 玉蟾宫
    洛谷2258 子矩阵
    Vijos 纸牌
    [leetcode] Word Break
    [leetcode] Maximum Binary Tree
    [leetcode] Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/z-dl/p/8953882.html
Copyright © 2011-2022 走看看