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() + ")"  )

补充知识点:

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是不变的

猜你喜欢

转载自www.cnblogs.com/z-dl/p/8953882.html