.apply
se usa a menudo cuando la intención es invocar una función variadic con una lista de valores de argumento, p.
La función Math.max([value1[,value2, ...]])
devuelve el mayor número de cero o más.
Math.max(10, 20); // 20
Math.max(-10, -20); // -10
Math.max(-10, 20); // 20
El método Math.max()
no le permite pasar en una matriz. Si tiene una lista de valores de los cuales necesita obtener la más grande, normalmente debería llamar a esta función usando Function.prototype.apply(), p.
Math.max.apply(null, [10, 20]); // 20
Math.max.apply(null, [-10, -20]); // -10
Math.max.apply(null, [-10, 20]); // 20
Sin embargo, a partir de la especificación de ECMAScript 6 puede utilizar el spread operator:
El operador diferencial permite una expresión que se expandió en lugares en los múltiples argumentos (para llamadas de función) o múltiples elementos (por literales de matriz).
Math.max(...[10, 20]); // 20
Math.max(...[-10, -20]); // -10
Math.max(...[-10, 20]); // 20
Cuando se llama a una función utilizando el operador variadic, incluso se puede añadir valores adicionales, por ejemplo,
Math.max(...[10, 20], 50); // 50
Math.max(...[-10, -20], 50); // 50
Ok por lo que veo que Math.max toma dos argumentos por lo mi ejemplo de solo llamar, Math.max (matriz) no funcionaría. Entonces, supongo que la pregunta es ¿cómo es la primera línea de código en mi pregunta invocando "max" en cada elemento del data_array? – codecraig
Javascript '.apply' y' .call' ftw !! – Rudie