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前台数据获取实现代码
Mar 16 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
使用jQuery操作HTML的table表格的实例解析
Mar 13 Javascript
javascript基础知识
Jun 07 Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 Javascript
Angular实现下拉框模糊查询功能示例
Jan 03 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
LayUI动态设置checkbox不显示的解决方法
Sep 02 Javascript
微信小程序 生成携带参数的二维码
Oct 23 Javascript
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
在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
2006/12/14 PHP
php 清除网页病毒的方法
2008/12/05 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
python抽象基类用法实例分析
2015/06/04 Python
selenium+python实现自动登录脚本
2018/04/22 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
通信工程毕业生求职信
2013/11/16 职场文书
市场安全管理制度
2014/01/26 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
献爱心活动总结
2014/05/07 职场文书
民主评议党员工作总结
2014/10/20 职场文书
祝酒词范文
2015/08/12 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
全新239军机修复记
2022/04/05 无线电