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 相关文章推荐
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
使用js检测浏览器的实现代码
May 14 Javascript
调用HttpHanlder的几种返回方式小结
Dec 20 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
vue项目首屏加载时间优化实战
Apr 23 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
Jun 16 Javascript
vue 中使用print.js导出pdf操作
Nov 13 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在线代理转向代码
2012/05/05 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
python中随机函数random用法实例
2015/04/30 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python中os模块功能与用法详解
2020/02/26 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
通息工程毕业生自荐信
2013/10/16 职场文书
社会实践心得体会
2014/01/03 职场文书
公益广告语集锦
2014/03/13 职场文书
食品业务员岗位职责
2014/03/18 职场文书
预备党员半年考察意见
2015/06/01 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
vue实现Toast组件轻提示
2022/04/10 Vue.js