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 相关文章推荐
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
angular框架实现全选与单选chekbox的自定义
Jul 06 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
Apr 08 Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
php创建sprite
2014/02/11 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python之yield表达式学习
2014/09/02 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
用Python进行websocket接口测试
2020/10/16 Python
Python 实现集合Set的示例
2020/12/21 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
什么是跨站脚本攻击
2014/12/11 面试题
高职助产应届生自荐信
2013/09/24 职场文书
工商管理应届生求职信
2013/10/07 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
学生会主席演讲稿
2014/04/25 职场文书
公司募捐倡议书
2014/05/14 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
高一军训决心书
2015/02/05 职场文书
交通事故被告答辩状
2015/05/22 职场文书
在人间读书笔记
2015/06/30 职场文书
2016年教师新年寄语
2015/08/18 职场文书
大队委员竞选稿
2015/11/20 职场文书
golang内置函数len的小技巧
2021/07/25 Golang
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript