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 相关文章推荐
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
jQuery中[attribute=value]选择器用法实例
Dec 31 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
Jan 02 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
浅析javascript的return语句
Dec 15 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
Node.js学习入门
Jan 03 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
layUI的验证码功能及校验实例
Oct 25 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
Sep 04 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
Nov 16 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
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
zbar解码二维码和条形码示例
2014/02/07 Python
Python编程中的文件操作攻略
2015/10/16 Python
NumPy 数组使用大全
2019/04/25 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
如何把python项目部署到linux服务器
2020/08/26 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
元旦文艺汇演主持词
2014/03/26 职场文书
项目转让协议书
2014/10/27 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
Pytorch 如何实现常用正则化
2021/05/27 Python