Javascript中Math.max和Math.max.apply的区别和用法详解


Posted in Javascript onAugust 24, 2020

最近在做一个小案例的时候遇到了Math.max.apply这么一个用法,之前很少遇到过感觉挺有趣的,就记录一下。

1Math.max

语法: Math.max(n1,n2,n3,...,nX)
返回值:max() 方法可返回指定的参数中带有较大的值的那个数

var a = Math.max(1,2,3,4);
console.log(a); //4

但是如果数据是放在一个数组里面,此时就不能这样调用了。这时就用到apply方法

2Math.max.apply

apply() 方法调用一个函数。简单理解为调用函数的方式,但是它可以改变函数的 this 指向,同时用指定数组替换函数的参数。

语法:fun.apply(thisArg, [argsArray])

  • thisArg:在fun函数运行时指定的 this 值 ,可以为null,就是不设置指向
  • argsArray:传递的值,必须包含在数组里面

这里额外补充一下,传递的值为数组形式,但是数组里是什么类型参数,返回的也是什么类型,比如输入的数组中是字符串这里取到的就是字符串,是数值取到的就是数值。比如传‘abc' 返回的也是‘abc'。(补充说明)

返回值:apply() 方法的返回值就是函数的返回值,因为它就是调用函数

var arr = [1, 66, 3, 99, 4];
var max = Math.max.apply(Math, arr);
var min = Math.min.apply(Math, arr);
console.log(max); //99
console.log(min); //1

2.1Math.max.apply拓展案例

这里我再举一个应用案例———自动生成编号(自增)
说明:data为一个json数组,里面的每个对象都一个id值

let maxBookCode = ()=>{ 
	let arr = [];  
	//遍历json数组,把所有对象的id存到arr这个空数组当中
  data.forEach((item)=>{  
  arr.push(item.id); 
  }); 
//最后返回里面id值最大的那个数
return Math.max.apply(null,arr);
}

外部调用 maxBookCode() + 1 就能自动生成编号并且是自增的。

总结

到此这篇关于Javascript中Math.max和Math.max.apply的区别和用法的文章就介绍到这了,更多相关Javascript中Math.max和Math.max.apply的区别和用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
Jul 08 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
AngularJS中run方法的巧妙运用
Jan 04 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
纯JS单页面赛车游戏制作代码分享
Mar 03 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
Javascript幻灯片播放功能实现过程解析
May 07 Javascript
Element InputNumber计数器的使用方法
Jul 27 Javascript
vue设置默认首页的操作
Aug 12 Javascript
vue使用video插件vue-video-player的示例
Oct 03 Javascript
在Vue中使用HOC模式的实现
Aug 23 #Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 #Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 #Javascript
vue中watch和computed的区别与使用方法
Aug 23 #Javascript
vue动态设置页面title的方法实例
Aug 23 #Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 #Javascript
Vue中keep-alive组件的深入理解
Aug 23 #Javascript
You might like
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php验证码实现代码(3种)
2015/09/07 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
Python和Bash结合在一起的方法
2020/11/13 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
自荐信的两点禁忌
2013/10/30 职场文书
教师新年寄语
2014/04/03 职场文书
学习礼仪心得体会
2014/09/01 职场文书
武夷山导游词
2015/02/03 职场文书
警示教育观后感
2015/06/17 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
python实现网络五子棋
2021/04/11 Python
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL