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 相关文章推荐
javascript 学习之旅 (3)
Feb 05 Javascript
百度地图api应用标注地理位置信息(js版)
Feb 01 Javascript
php的文件上传入门教程(实例讲解)
Apr 10 Javascript
生成二维码方法汇总
Dec 26 Javascript
AngularJs 动态加载模块和依赖
Sep 15 Javascript
Angular.JS学习之依赖注入$injector详析
Oct 20 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
Feb 27 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
layui select动态添加option的实例
Mar 07 Javascript
详解Vue 动态组件与全局事件绑定总结
Nov 11 Javascript
浅析JS中NEW的实现原理及重写
Feb 20 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
Python hmac模块使用实例解析
2019/12/24 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
利用python进行文件操作
2020/12/04 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
毕业生自我鉴定实例
2014/01/21 职场文书
小学生安全保证书
2014/02/01 职场文书
初中生自我鉴定
2014/02/04 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
促销活动总结范文
2014/04/30 职场文书
建筑施工安全责任书
2014/07/24 职场文书