El operador spread permite manejar elementos considerados iterables como son arrays(un array tiene/itera elementos), strings(tiene/itera caracteres) u objetos(tiene/itera pares clave-valor) sin necesidad de preparar un algoritmo cíclico o de bucle. 
Con spread se puede: 
- En llamadas a funciones, que arrays o strings expandan sus elementos. 
- Operar entre arrays, el operador expande sus elementos. Se pueden copiar, mezclar, intercalar.
- Operar con objetos spread expande los pares clave-valor. Lo mismo que los arrays 
Ejemplos básicos
// expande el string en sus 3 caracteres
console.log('String expandido: ', ..."abc"); 
// expande el array en sus 4 elementos
console.log('Array expandido: ', ...[1,2,3,4]); 
// Expande el primer objeto y le añade el par clave-valor masattr: 'def'
console.log('Objeto expandido: ', {...{id: 1, desc:'abc'}, masattr: 'def' }); 
// Expande los arrays y crea uno nuevo con los elementos de los dos
console.log('Une dos arrays: ',[...[1,2,3,4],...[5,6]])
// String expandido:  a b c
// Array expandido:  1 2 3 4
// Objeto expandido:  { id: 1, desc: 'abc', masattr: 'def' }
// Une dos arrays:  [ 1, 2, 3, 4, 5, 6 ]
 
Otros ejemplos
 En el siguiente ejemplo se intercalas los elementos de un array en otro
// Spread en array 
let otrosIdiomas = ['inglés', 'aleman'];
let idiomasHablados = ['español', ...otrosIdiomas, 'frances'];
console.log ('Ver idiomasHablados: ', idiomasHablados)
// Ver idiomasHablados:  [ 'español', 'inglés', 'aleman', 'frances' ]
En el siguiente ejemplo se copia un array en otro. La copia es poco profunda (shallow), es decir el array original es totalmente independiente de nuevo obtenido con la copia.
// Copiar array como arr.slice()
let numeros1 = [1, 2, 3];
let numeros2 = [...numeros1]; 
numeros2.push(4);
console.log ('numeros1 y numeros2: ', numeros1, numeros2) 
// numeros1 y numeros2:  [ 1, 2, 3 ] [ 1, 2, 3, 4 ]
En el siguiente ejemplo el array es pasado a una función, el operador spread expande el array y se convierten en los argumentos de la función llamada.
//Spread en llamadas a funciones
function miFuncion(a1, a2, a3) { 
    console.log ('Argumentos: ', a1, a2, a3)
}
let argumentos = [0, 1, 2];
miFuncion(...argumentos);
En el siguiente ejemplo se copian y mezclan objetos siendo de nuevo una copia poco profunda.
// Con objetos
let objeto1 = { desc: 'ob1', p1: 1 };
let objeto2 = { desc: 'ob2', p2: 2 };
let objetoCopiado = { ...objeto1 };
let objetoMezclado = { ...objeto1, ...objeto2 };
console.log ('Objetos copiado y mezclado: ', objetoCopiado, objetoMezclado)
// Objetos copiado y mezclado:  { desc: 'ob1', p1: 1 } { desc: 'ob2', p1: 1, p2: 2 }
 
Conclusión
El operador spread facilita las tareas del desarrollador cuando se trata de realizar ciertas operaciones con objetos iterables: array, strings y objetos.
 
 
No hay comentarios:
Publicar un comentario