求数组中的最大值,不难相信大家都熟悉,不过动动手总是好的,哈哈哈,最近面试什么的俺发现了一个真理,理论和实践真的差了十万八千里。
let arr = [2, 5, 8, 7, 4, 1, 22, 33, 66, 55, 2, 5, 8, 4, 8, 855, 5, 868, 5]
//普通循环结构
function findMax(){//es6提倡拓展运算符而不是arguments
let max = -Infinity;
for(let i=0; i<arguments.length;i++){
if(max < arguments[i]){
max = arguments[i];
}
}
return max;
}
console.log(findMax(...arr))
//js高阶循环函数
let result= -Infinity;
arr.map(x=>{
result = result>x?result:x;
})
console.log(result)
//js高阶函数
console.log(arr.reduce((x, y) => {
return x > y ? x : y;
}))
//es6拓展运算符
console.log(Math.max(...arr))
//Function原型方法传参
console.log(Math.max.apply(null, arr))//传入一个对象数组给null对象,只是传参作用,排序时不需要null
console.log(Math.max.call(null, ...arr))//传入多个参数,对象拓展运算符
//js 高阶函数排序
console.log(arr.sort((x, y) => {
if (x < y) {
return 1;
}
if (x > y) {
return -1;
}
return 0
})[0])
结果: