2015-09-06 27 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) –