El concepto de JavaScript Spread operator

Vamos a crear un ejemplo de JavaScript Spread operator , este operador viene incorporado en JavaScript ES6 y cada día se usa más.  Supongamos que tenemos el siguiente array de JavaScript [1,2,3,4,5,6] y queremos obtener el numero mayor. La forma más sencilla de hacer esto es :


var lista=[1,2,3,4,5,6];

var mayor=0;
for (var i=0;i<lista.length;i++) {

if (mayor<lista[i]) {

mayor=lista[i];
}
}

console.log(mayor);

La pregunta es : ¿ Existe una forma mejor de hacerlo?

JavaScript ES5 , otro enfoque

Con los conocimientos que tenemos de JavaScript clásico podríamos apoyarnos en Math.max y calcular el mayor de dos números.


console.log(Math.max(lista[0], [lista[5]]))

Es un comienzo pero no es lo que queremos , ya que tenemos un array de números ,  muchas personas optan por escribir algo de este estilo:


console.log(Math.max(lista));

Lamentablemente no funciona ya que el método max no espera un array de elementos.

Sino una lista de elementos separados por comas. El siguiente código si es válido:


console.log(Math.max(1,2,3,4,5,6));

Para solventar nuestro problema podemos usar la función apply de Javascript que ya comentamos en otro artículo y se encarga de invocar una función pasando un objeto y un array de argumentos.


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

Lamentablemente este código no es sencillo de entender , pero le necesitamos si queremos calcular el máximo de una forma elegante ya que el método nos pide una lista de argumentos no un array. Vamos a ver como se solventa esto con ES6.

JavaScript Spread Operator

Con ES6 todo es mucho más sencillo ya que podemos pasar a la función el array  y usar el JavaScript Spread operator para que nos convierta el array a una lista de argumentos.

 

 


console.log(Math.max(...lista));

El funcionamiento será idéntico y mucho más sencillo de entender para el desarrollador y las personas que revisen el código.  JavaScript Spread operator nos permite eliminar prácticamente el uso de la función apply que tantos dolores de cabeza da a la gente cuando empieza.

Otros artículos relacionados:  JQuery Promise   JavaScript Streams  JavaScript  Bundles