原生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函数依次取出<自身的元素,当取不出元素即返回的函数长度===零时,就取得了最大值,至于为什么用递归不用循环,用IIEF不用先声明后使用,嗯,就是单纯的不想

(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);

使用递归模拟数组方法

和上面两个方法类似,只是内层用了用了递归和IIEF模拟了every

(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);

友情提示

前面几种方法相对比较简洁,工作中比较常用,后边三种比较适合身子骨比较硬、头比较铁的码农仅供学习、娱乐,切莫当真(狗头保命)。

js获取数字数组最大值的几种方式的更多相关文章

  1. js取数组最大值的四种方式

    var arr = [7,2,0,-3,5];1.apply()应用某一对象的一个方法,用另一个对象替换当前对象 var max = Math.max.apply(null,arr);console. ...

  2. js 获取Array数组 最大值 最小值

    https://stackoverflow.com/questions/1669190/find-the-min-max-element-of-an-array-in-javascript // 错误 ...

  3. js获取url參数值的两种方式具体解释

    有个url例如以下: http://passport.csdn.net/account/login? from=http%3a%2f%2fwrite.blog.csdn.net%2fpostedit ...

  4. js 获取json数组里面数组的长度

    作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋 ...

  5. CountUp.js – 让数字以非常有趣的动画方式显示

    CountUp.js 无依赖的.轻量级的 JavaScript 类,可以用来快速创建以一种更有趣的动画方式显示数值数据.尽管它的名字叫 countUp,但其实可以在两个方向进行变化,这是根据你传递的 ...

  6. PHP如何实现数据类型转换(字符转数字,数字转字符)(三种方式)

    PHP如何实现数据类型转换(字符转数字,数字转字符)(三种方式) 一.总结 一句话总结: 1.强制转换:(int) (bool) (float) (string) (array) (object) 2 ...

  7. 获取机器安装.NET版本的几种方式

    当调查应用程序问题时,通常需要先确认目标机器所安装的 .NET Framework 的版本.可以通过如下方式来确认版本号: 通过控制面板安装程序查询 通过查询注册表获取版本信息 通过查看安装目录获取版 ...

  8. js关闭当前页面(窗口)的几种方式总结(转)

    js关闭当前页面(窗口)的几种方式总结     1. 不带任何提示关闭窗口的js代码 代码如下 <a href="javascript:window.opener=null;windo ...

  9. Struts2中获取HttpServletRequest,HttpSession等的几种方式

    转自:http://www.kaifajie.cn/struts/8944.html package com.log; import java.io.IOException; import java. ...

  10. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

随机推荐

  1. [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门

    [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...

  2. java多线程系类:基础篇:01基本概念:

    这个系类的内容全部来源于http://www.cnblogs.com/skywang12345/p/3479024.html.特别在此声明!!! 本来想直接看那位作家的博客的,但还是复制过来. 多线程 ...

  3. zookeeper的配置项

    1 tickTime:CS通信心跳数 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳.tickTime以毫秒为单位. tick ...

  4. Calendar Game

    http://poj.org/problem?id=1082 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4820   A ...

  5. mybatis使用时org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):的错误

    最近在使用mybatis时,出现了 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 这 ...

  6. JS正则表达式之特殊符号

    在正则表达式中,许多标点符号具有特殊含义,比较难记,现归纳备个份: 这些符号有:^ $ . * +  - ? = ! : | \ / ( ) [ ] { } 1."[ ]"表示字符 ...

  7. HDU4686——Arc of Dream矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4686 题目大意: 已知a0=A0, ai=Ax*ai-1+Ay; b0=B0, bi=Bx*bi-1 ...

  8. RunLoop的简单理解笔记

    一句话解释RunLoop:运行任务的循环. 为什么要有RunLoop:解决交互式UI设计中的一个问题,如何快速响应用户输入,如何快速将程序运行结果输出到屏幕? 基本原理:1 将任务分解的足够细 2 每 ...

  9. BUAAOO P1-P3 Expression Dirivation

    目录 1.问题描述 1.1.概念定义 7.程序度量 8.知识点笔记 1.运行 2.1.方法 2.2.检测相等性 2.3.空串与null串 2.4.使用StringBuilder构建字符串 2.5.使用 ...

  10. Mvc检查图片格式后上传

    /// <summary> /// 检查是否文件是否图片并保存 /// </summary> /// <param name="file">文件 ...