obtener objects numero mostrar minimo mayor maximo example arreglo array javascript function apply

objects - mostrar numero mayor javascript



¿Cómo funciona Math.max.apply()? (4)

¿Cómo funciona el Math.max.apply() ?

<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <script> var list = ["12","23","100","34","56", "9","233"]; console.log(Math.max.apply(Math,list)); </script> </body> </html>

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

El código anterior encuentra el número máximo en la lista. ¿Alguien puede decirme cómo funciona el código siguiente? Parece que funciona si paso null or Math.

console.log(Math.max.apply(Math,list));

¿Todas las user-defined/Native functions el user-defined/Native functions tienen un método de llamada y aplicación que podemos usar?


¿Alguien puede decirme cómo funciona el siguiente código?

Math.max.apply(Math,list)

Math.max una función Math.max con el objeto Math para usar como referencia en la implementación de la función (cuerpo) y la list para pasar como argumentos.

Así que esto finalmente equivale a

Math.max("12","23","100","34","56", "9","233")

Parece que funciona si paso nulo o matemático.

Obviamente, la implementación Math.max no usa variables de instancia, no hay ninguna razón para hacerlo. La implementación ingenua simplemente iteraría sobre los arguments y encontraría el máximo.

¿Todas las funciones nativas / definidas por el usuario tienen un método de llamada y aplicación que podemos usar?

Sí, cada función individual puede invocarse mediante call o apply

Referencias


Math.max (val1, val2, ...)

Math.max(1, 2, 3); // Math.max([value1[, value2[, ...]]])
value1, value2... son parámetros y deben ser números https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

No puede pasar array como parámetros Math.max . Para pasar una matriz, debes usar apply .

Aplicar

El primer parámetro de apply es this , el segundo es array . Los métodos matemáticos son equivalentes a estáticos en otros idiomas, lo que significa que no necesita una instancia de objeto a diferencia de array.prototype.slice por lo que no es necesario que pase this en este caso.

Ejemplo

var arr = [1, 2, 3]; Math.max(1, 2, 3); // -> 3 Math.max(arr); // -> NaN (Not a Number) Math.max.apply(null, arr); // Math.max.apply(null, [1, 2, 3]) -> Math.max(1, 2, 3) -> 3 arr.slice(1); // -> returns Array [2, 3] Array.prototype.slice.call(arr, 1); // Array.prototype.slice.call([1, 2, 3], 1) == [1, 2, 3].slice(1)

Cuando quiera pasar una matriz como parámetro, debe usar apply ; de lo contrario, use call .

un pply = un rray
c todo = c omma separado
Más sobre llamar y solicitar


En JavaScript ES6 simplemente use el operador Spread :

var list = ["12","23","100","34","56","9","233"]; console.log(Math.max(...list)); // ^^^ Spread operator


apply acepta una matriz y aplica la matriz como parámetros a la función real. Asi que,

Math.max.apply(Math, list);

se puede entender como,

Math.max("12", "23", "100", "34", "56", "9", "233");

Entonces, apply es una forma conveniente de pasar una matriz de datos como parámetros a una función. Recuerda

console.log(Math.max(list)); # NaN

no funcionará, porque max no acepta una matriz como entrada.

Hay otra ventaja, al usar apply , puedes elegir tu propio contexto. El primer parámetro, que pase para apply cualquier función, será el que this dentro de esa función. Pero, max no depende del contexto actual. Entonces, cualquier cosa funcionaría en lugar de Math .

console.log(Math.max.apply(undefined, list)); # 233 console.log(Math.max.apply(null, list)); # 233 console.log(Math.max.apply(Math, list)); # 233

Como apply se define realmente en Function.prototype , cualquier objeto de función de JavaScript válido tendrá función de apply , de forma predeterminada.