原生Math.max方法

文章插图
Math.max 方法不能接收数组,可以使用ES6的…将数组打散
const arr = [111, 12, 111, 34, 2, 5, 76];console.log(Math.max(…arr));
当然也可以用apply方法调用
console.log(Math.max.apply(null, arr));遍历获取最大值
遍历数组,依次比较,保存较大的数,最终得到的就是最大值,这里使用forEach遍历
function max2(arr) {let result = -Infinity;arr.forEach((item) => {if (item > result) {result = item;}});return result;}console.log(max2(arr));利用排序获取最大值
将数组使用sort方法排序后,第一个元素或最后一个元素就是最大值,再用shift或者pop方法取出(由升序还是降序决定),值得注意的是这两个方法会修改原数组,可以使用slice方法复制一份数组再执行弹出元素操作
function max3(arr) {return arr.sort((a, b) => a – b).slice().pop();}console.log(max3(arr));使用filter排除小的值
使用filter函数依次取出<自身的元素,当取不出元素即返回的函数长度===零时,就取得了最大值,至于为什么用递归不用循环,用IIFE不用先声明后使用,嗯,就是单纯的不想
(function greater(arr, idx) {const res = arr.filter(item => item > arr[idx]);if (res.length === 1) {console.log(res[0]);return res[0];}greater(arr, idx + 1);})(arr, 0);使用every判断自己是否是最大值
使用every的原理和使用filter的原理类似,即当所有元素都<=本身的时候,本身就是最大值
(function greater(arr, idx) {if (arr.every(item => item <= arr[idx])) {console.log(arr[idx]);return arr[idx];}greater(arr, idx + 1);})(arr, 0);使用递归模拟数组方法
和上面两个方法类似,只是内层用了递归和IIFE模拟every
【js获取对象的值的方法 js对象取值的方法】(function outer(arr, i) {let flag = function inner(arr, j) {if (arr[j] <= arr[i]) {return false;}return arr.length < j + 1 ? inner(arr, j + 1) : true;}(arr, 0);if (flag) {console.log(arr[i – 1]);return arr[i – 1];}outer(arr, i + 1);})(arr, 0);
- 《向风而行》|《向风而行》李雨珩结局是什么 李雨珩喜欢的是谁
- 龙胆泻肝丸能治高血压吗 关于龙胆泻肝丸的副作用厉害吗
- 红薯叶敷面膜的做法 番薯叶的做法大全
- 排毒养颜胶囊的功效与作用是什么 女人排毒养颜最好的药
- 乳清蛋白和全脂奶粉哪种好 最好的中老年蛋白质粉排名
- 50岁的人除了跑步快走 老年人的性功能如何维持
- 2岁宝宝怎样吃鳕鱼 一岁宝宝吃鳕鱼的做法
- 35岁去黄美白的护肤品 快速美白去黄的方法
- 每天都想吃辣的 想吐吐不出来吃什么药
- 你在喝醉之后是怎么醒酒的 过量饮酒的穴位按摩解酒
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
