JS 中通过apply实现数组中,查找最大值的方法原理是什么?
JS数组中无法直接通过Math.max
查找数组中元素的最大值,但可以通过apply
方法实现,底层实现逻辑及原理是什么样的呢?
Math.max.apply(null, [1,2,3]);
回复
1个回答
test
2024-07-10
我们这样来理解,首先,
Math.max(value0, value1, /* … ,*/ valueN)
这个函数的参数并不是数组,比如你有N个数字比大小,哪它就要输入N个参数,对于在数组中的数字,你把整个数组当参数给它,Math.max就认为只有一个参数了。所以比不了
也就是说,你要把数组中每一位数字,都转成它的参数
const arr=[1,2,3]
//最笨的办法是
Math.max(arr[0],arr[1],arr[2])
//最新的办法
Math.max(...arr)
上面都是把数组的每一位,变成参数传个Math.max
哪为什么,Function.prototype.apply() 就可以呢,因为apply(thisArg, argsArray),第二个参数,就是接受一个数组对像,把它变成调用者的所有参数,
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容