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 相关文章推荐
输入自动提示搜索提示功能的使用说明:sugggestion.txt
Sep 02 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
Feb 16 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
微信小程序 教程之模块化
Oct 17 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
layui前段框架日期控件使用方法详解
May 19 Javascript
vue.js组件之间传递数据的方法
Jul 10 Javascript
关于js中的鼠标事件总结
Jul 11 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
js判断输入框不能为空格或null值的实现方法
Mar 02 Javascript
javascript实现弹出层效果
Dec 10 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
php设置session值和cookies的学习示例
2014/03/21 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
js function定义函数的几种不错方法
2014/02/27 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
基于python实现微信模板消息
2015/12/21 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
听课评语大全
2014/04/30 职场文书
个人委托书
2014/07/31 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
安全学习心得体会范文
2016/01/18 职场文书
如何拟写通知正文?
2019/04/02 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技