js求数字最大值 Math与 .apply(), reduce的妙用
嘿嘿 秃头小子又来了
今天想想聊聊求最大值的方法
最近做的后端转pdf 的功能 需要前端提供页面,由于生成pdf插件 不识es6 以及部分es5 的语法和 api,整的哥们人有点烦
求最大值的方法固然多,小弟不才这边举几个栗子
- 普通循环遍历去求最大值 (老手不会用哦)
- 扩展运算符加数学方法 Math.max(…array)
- ok 上面那些都是前戏, 接下来的两个方式才是今天的重头戏 多的不说 直接上码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>reduce的使用 求最大值title>
</head>
<body>
<script>
var arr = [1, 2, 3, 4, 5];
sum = arr.reduce(function (prev, cur, index, arr) {
//输出的是第一项的值或上一次叠加的结果,正在被处理的元素,正在被处理的元素的索引值
console.log(Math.max(prev, cur));
return Math.max(prev, cur)
// return prev + cur;
})
console.log(arr, sum); //输入数组本身和最后的结果
// 主要是利用reduce 累加器递归的原理 经过处理的数字 通过遍历会进行到下次循环继续进行判断
// 每次判断完成的最大值 与下一个值进行判断得出结果
// 采用这个方法 是因为有些环境下不支持扩展运算符的写法 此方法就是不二之选
</script>
</body>
</html>
- apply()与max() 方法求最大值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let arr = [1, 2, 3, 4, 5, 6]
let maxArr = Math.max.apply(Math, arr)
console.log(maxArr);
// apply() 可谓是相当之妙了 由于Math.max() 需要传数组参数 支持数组形式
// 恰好apply(this,[]) 可以改变方法调用者,并且参数以数组形式传入后打散在传参原地
</script>
</body>
</html>