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