如何寻找一个数值数组中的最大元素?

场景:Math.max()返回给定的一组数字中的最大值,如果是数值数组,怎么从数组中返回最大值?

措施:1.使用Math.max.apply(null, numArray);numArray为任意长度的数组

           2.使用最新的扩展语句展开语法 Math.max(...arr);

扩展延申:call,apply,bind的区别?

          callapply的用法几乎一样,唯一的不同就是传递的参数不同,call只能一个参数一个参数的传入。
   apply则只支持传入一个数组,哪怕是一个参数也要是数组形式。最终调用函数时候这个数组会拆成一个个参数分别传入。
          bind方法,他是直接改变这个函数的this指向并且返回一个新的函数,之后再次调用这个函数的时候this都是指向bind绑定的第一个参数。bind传参方式跟call方法一致。

  
const obj = {}
function test(...args) {console.log(args)}
const newFn = test.bind(obj, '静态参数1', '静态参数2')
newFn('动态参数3', '动态参数4')

 总结:

  1. 当我们使用一个函数需要改变this指向的时候才会用到call`apply`bind
  2. 如果你要传递的参数不多,则可以使用fn.call(thisObj, arg1, arg2 ...)
  3. 如果你要传递的参数很多,则可以用数组将参数整理好调用fn.apply(thisObj, [arg1, arg2 ...])
  4. 如果你想生成一个新的函数长期绑定某个函数给某个对象使用,则可以使用const newFn = fn.bind(thisObj); newFn(arg1, arg2...)

       

猜你喜欢

转载自www.cnblogs.com/juicy-initial/p/11505484.html