2015-09-06 71 views
1

举例来说,我想从数字数组中取出最大的数字。作为一个数组的Javascript函数参数

var numbers = [54,34,76,33,87,12,76,92,44,93,23]; 

我希望能够使用Math.max()发现数量最多,而无需使用eval

所以,我想能够传递一个参数数组到一个函数。阵列的长度可能会改变,所以Math.max(numbers[0],numbers[1]...)将无法​​工作。

有什么办法可以做到这一点?

回答

2

可以使用.apply()方法:

var max = Math.max.apply(Math, numbers); 

.apply()方法是Function.prototype属性,因此是适用于所有功能情况。它的第一个参数用作要调用的函数中的this的值,第二个参数应该是一个将用作参数值列表的数组。

在我的例子上面我用Math作为this的价值,因为这是this将在Math.max一个典型的调用,但(在我安装的Firefox至少)Math.max.apply(null, numbers);工作过。

+0

太棒了!谢谢 – Tobsta

+0

另外,如果你使用JavaScript Harmony ** ES6 **,你可以使用spread运算符,查看我最近的[answer](http://stackoverflow.com/a/32429627/1074519) –