Как использовать Math.max и т.д. Как функции более высокого порядка
Короче говоря, это работает:
[1, 2, 3].reduce(function (a, b) { return Math.max(a, b); });
=> 3
Но это не так:
[1, 2, 3].reduce(Math.max);
=> NaN
Чистое недоумение.
Это в Firefox 3.5.9, который, как я полагаю, использует стандартная реализация mozilla сокращения, FWIW.
Ответы
Ответ 1
Math.max
может использоваться как функция более высокого порядка. Задача .reduce
вызовет функцию с 4 аргументами:
Math.max(accumulator, value, index, the_array)
здесь the_array
- массив, поэтому Math.max
возвращает NaN. Я не думаю, что есть простой способ отбросить последние 2 аргумента.
Ответ 2
Math.max.apply(Math, [1, 2, 3]);
//3