Continuando, ahora hablemos sobre el patrón de descanso.
y también parámetros de descanso
y el resto del patrón se ve exactamente como el operador de propagación.
Entonces tiene la misma sintaxis con los tres puntos.
pero en realidad hace lo contrario del operador de propagación.
Ahora eso no parece tener mucho sentido, ¿verdad?
Pero déjame explicarte, así que recuerda
que usamos el operador de propagación para construir nuevas matrices
o para pasar múltiples valores a una función.
Esos son los dos casos de uso del operador de propagación
y en ambos casos, usamos el operador de propagación
para expandir una matriz en elementos individuales.
Ahora, el patrón de descanso usa exactamente la misma sintaxis
sin embargo, para recopilar múltiples elementos
y condensarlos en una matriz.
así que eso es realmente lo opuesto a la propagación
El operador de propagación es para desempaquetar una matriz
mientras que el resto es empaquetar elementos en una matriz
y como eso suena muy confuso
escribamos un poco de abrigo y comencemos explorando
el caso de uso de construir una carrera.
Así que solo para recapitular en la última lección
usamos para esparcir una matriz como esta.
Así que queríamos crear una nueva matriz
basado en una matriz existente
y entonces usamos el operador de propagación para expandir eso.
Así que aquí todavía estamos usando la sintaxis extendida
y sabemos que esta es la sintaxis extendida
porque lo estamos usando en el lado derecho
del operador de asignación, por lo tanto del signo igual.
Así que déjame escribir eso aquí,
propagación, porque en el lado derecho del operador de asignación
sin embargo, también podemos usarlo en el lado izquierdo
del operador de asignación junto con la desestructuración.
Así que ahora estamos mezclando todo junto aquí
pero tengan paciencia conmigo aquí.
Así que digamos que estamos desestructurando esta matriz
así que primero déjame escribir la matriz aquí
dos, tres, cuatro y cinco
y digamos que quiero tomar el primer elemento
y almacenarlo en la variable A
el segundo elemento a almacenar en la variable B
y ahora puedo usar aquí el patrón de descanso.
Así que la misma sintaxis y ahora llamemos a esto otros
y aquí está el resto de la sintaxis
porque esta en el lado izquierdo
del operador de asignación,
primero escribe eso y luego ve el resultado
porque en el lado izquierdo del signo igual
y ahora registremos A, B
y los demás, sea lo que sea
y así uno, dos y luego básicamente el resto
de los elementos que no seleccionamos
en las variables A y B.
Entonces, ¿Que esta pasando aquí?
Bueno, como antes
el primero y el segundo elementos se convierten en este primero
y segundas variables, pero luego aquí viene el patrón de descanso
y por eso se llama descanso porque tardará
el resto de los elementos.
Así que los elementos restantes de la matriz
y luego ponerlos en una nueva matriz
y en este caso llamamos a esta matriz otros.
Así que como dije al principio,
el resto del patrón básicamente recoge
los elementos que no se utilizan
en la tarea de desestructuración.
Así que veamos otro ejemplo aquí.
y esto le mostrará que en realidad podemos usar
los tres puntos a ambos lados del operador de asignación.
Así que digamos que tenemos esta matriz
cual sera todo el menu
y entonces ya sabemos cómo construir eso
utilizando el operador de propagación.
Así que vamos al menú principal del restaurante dot
eso es punto
entonces sacamos todos los elementos de esa matriz
y ponerlo en una nueva matriz
y luego en esta nueva matriz
también ponemos el menú de entrada, ¿vale?
Así que esto va a ser una matriz, una gran matriz
con todo el menú completo, pero ahora
en realidad también podemos usar el patrón de descanso aquí
y de nuevo, lo hacemos aquí en el lado izquierdo
mientras hacemos la desestructuración.
Así que echemos un vistazo aquí al menú principal.
entonces, digamos que queremos llevarnos la pizza
y el risotto, ¿de acuerdo?
Así que ese es el primero y el tercero.
así que vamos a crear una variable llamada pizza
entonces podemos omitir una variable recuerda,
dejando un hueco ahí en la tarea de desestructuración
entonces llamemos a una variable risotto
y luego simplemente poner bien todos los demás alimentos
en una matriz llamada otra comida
y ahora simplemente registremos todo aquí
a la consola,
Muy bien, entonces tenemos la pizza de hilo.
el risotto de hilo
y luego todo el resto de los elementos
que no seleccionamos previamente en sus propias variables
y tenga en cuenta aquí que el resto de la sintaxis recopila
toda la matriz después de la última variable.
Así que en este caso aquí risotto
por lo que no incluye ningún elemento saltado
así que en realidad es solo el resto de los elementos
y sí otra vez, como dije,
no incluye ningún elemento saltado
y por eso mismo,
el patrón de descanso siempre debe ser el mínimo
en la tarea de desestructuración
porque de lo contrario, ¿cómo sabrá JavaScript
hasta cuándo debería recopilar el resto de la matriz, ¿verdad?
Entonces, por ejemplo, no podríamos hacer esto.
por lo que el mensaje de error es en realidad muy explícito
entonces el elemento resto debe ser el último elemento.
Muy bien, y también por la misma razón.
solo puede haber un descanso
en cualquier tarea de desestructuración, ¿de acuerdo?
y ahora hagamos lo mismo en objetos
porque también funciona de hecho en objetos.
Así que la diferencia entonces, por supuesto,
es que los elementos restantes se recogerán
en un nuevo objeto y no en una nueva matriz.
Así que no trabajemos aquí con nuestro horario de apertura.
y digamos que queremos seleccionar solo sábado aquí
y luego el resto debe ir a un nuevo objeto
cuales son los dias de semana.
Así que el sábado es fin de semana
y el viernes y el jueves son los días de semana
y básicamente queremos crear un objeto
solo con estos dos.
Entonces solo para los días de semana y ahora eso es fácil de hacer
todo lo que tenemos que hacer es básicamente sacar un sábado
en su propia variable
y luego simplemente recolectamos el resto en un nuevo objeto
y esto lo podemos llamar días de semana, ¿de acuerdo?
Y luego aquí, por supuesto, el objeto
que somos, punto de desestructuración horario de apertura
y ahora echemos un vistazo a nuestros días de semana aquí
y de hecho es exactamente lo que esperábamos.
Es un objeto que solo contiene viernes y jueves.
y otra vez, eso es porque ya nos llevamos el sabado
en su propia variable antes
y así este luego recogió el resto de las propiedades
en su propio objeto nuevo.
Genial, así que ahora sabemos cómo el patrón de descanso
trabaja para recopilar elementos en una tarea de desestructuración
y en realidad vamos a escribir eso aquí.
Así que toda esta primera parte es para desestructurar
y luego la segunda parte será básicamente sobre funciones.
Entonces, recuerda que también para el operador de propagación
el segundo caso de uso fue pasar múltiples argumentos
en una función todo al mismo tiempo.
Así que eso es exactamente lo que hicimos aquí.
en nuestro ejemplo real, con esta matriz de ingredientes, ¿verdad?
Así que teníamos una matriz
y luego expandimos todos estos elementos de la matriz
para básicamente pasar estos elementos entonces
como argumentos individuales de la función
y ahora, como puedes adivinar
el resto del operador básicamente puede hacer lo contrario
y ahora escribamos un ejemplo, función de deuda.
Así que lo llamaré agregar
y así en una función de suma real
queremos tomar una cantidad arbitraria de argumentos
y simplemente sumarlos todos juntos, ¿verdad?
Así que funciona y por ahora, dejémoslo así.
y entonces permítanme ilustrar
cómo queremos llamar a esta función, en realidad.
Así que queremos ser capaces de hacer, por ejemplo,
este dos y tres, nos daría cinco
pero entonces también podríamos querer poder hacer esto
cinco y tres y siete y dos, por ejemplo.
De nuevo, cualquier cantidad arbitraria de argumentos
debería funcionar para esta función
así que algo como esto, por ejemplo,
pero por supuesto no vamos a especificar
como siete argumentos aquí, ¿verdad?
Entonces, ¿cómo podemos hacer eso?
Bueno, usaremos el patrón de descanso
y en este caso, en realidad se llama parámetros de descanso.
Así que usemos la sintaxis de descanso
y luego llamemos a este argumento números
y luego registre estos números en la consola.
Así que esta función se va a llamar tres veces.
por lo que esperamos tres resultados aquí
y lo que vemos aquí son tres carreras
con todos los argumentos que pasamos a las funciones
pero en verdad son una raza
y ahora una vez más, como dije al principio
el resto de la sintaxis está tomando múltiples números
o múltiples valores y luego los empaqueta todos en una matriz.
Entonces, una vez más está haciendo lo contrario.
del operador de propagación
entonces con el operador de propagación expandimos
con el resto de sintaxis comprimimos
así que aquí se llama argumentos de descanso, ¿de acuerdo?
Y ahora podemos escribir algo de lógica simple aquí
para realmente sumar todos los números juntos.
Creo que ya lo hicimos.
Así que aquí está nuestra variable de suma que se acumulará
entonces escribamos un bucle for simple
y también podrías hacer este año como un reto
si lo quieres
pero de todos modos, lo haré de inmediato.
Entonces sabemos que los números son una matriz
y entonces podemos tomar la longitud de esa matriz
y ejecutar este ciclo
siempre que el contador esté por debajo de la longitud de la matriz
y en cada iteración simplemente sumamos el número actual
al valor de la suma actual básicamente.
Así que estoy escribiendo esto muy rápido
porque ya hicimos esto antes, ¿de acuerdo?
Y entonces esto no debería ser nada nuevo en este momento.
y ahora para terminar podemos registrar esta suma en la consola
para obtener algunos resultados
y de hecho este año ya son cinco
y entonces esto es en este punto una función de trabajo
que puede aceptar cualquier número de parámetros
y espero que aún no estés confundido por esto
y ahora quiero llevarlo incluso al siguiente nivel.
Entonces, creemos otra matriz más, llamémosla X
porque no es importante
y pondré los números 23 y digamos cinco y siete.
Así que ahora si quisiéramos tomar estos valores aquí
y llamar a la función de añadir
con estos tres valores, ¿cómo haríamos eso?
Bueno, simplemente suficiente
simplemente usamos el operador de propagación y eso es todo
y esto es exactamente lo que aprendimos
en la conferencia anterior.
Así que estamos tomando todos los números de la matriz.
y difundirlos aquí
y entonces esto sería lo mismo que escribir manualmente
23, cinco y siete
y entonces este es un buen ejemplo de mostrarte
qué tan extendido es lo contrario de resto
porque después de que estos números se difundan aquí
luego ingresarán esta función de agregar aquí
y luego serán inmediatamente recogidos
en esta matriz de números por los demás parámetros, ¿de acuerdo?
Así que aquí desempaquetamos los valores.
y aquí empaquetarlos de nuevo en una matriz
y en realidad podrías estar preguntándote
por qué no estamos simplemente escribiendo una función de suma
que toma una matriz como argumento
y entonces no necesitamos todo esto.
Bueno, es mucho mejor hacerlo así.
porque entonces la función puede aceptar tanto una matriz
básicamente haciendo esto
y simplemente todos los valores individuales como este
y también se siente un poco más natural
para simplemente pasar tantos argumentos como queramos sumar
en la función.
Entonces, sin tener que lidiar con arreglos si no queremos
y entonces este resto de parámetros es algo
que verás todo el tiempo
en la base del código JavaScript moderno.
Bien, y ahora solo para terminar esto
usemos parámetros de descanso
en nuestro ejemplo de restaurante aquí también para ver algunos casos extremos.
Así que agreguemos otro método aquí
y esta vez el método se tratará de pedir pizza.
Así que pide pizza
y ahora las pizzas deben tener al menos un ingrediente
pero los demás ingredientes son opcionales
y para este descanso los parámetros son perfectos.
Así que digamos ingrediente principal y luego los demás ingredientes
y luego esto va a funcionar un poco
como desestructurar de nuevo donde
esto aquí básicamente recopilaremos todo el resto
de los argumentos en una matriz.
Así que veamos ese ingrediente tan principal
y eso ha registrado los otros ingredientes, ¿de acuerdo?
Y ahora vamos a pedir pizza
así que los restaurantes pensaron pedir pizza
y ahora aquí especificamos nuestros ingredientes.
Así que digamos champiñones, cebolla, aceitunas y espinacas.
así que una buena pizza vegetariana aquí
y como ves podemos especificar tantos argumentos
como queramos salvemos esto
y ves aquí abajo inmediatamente
que obtenemos champiñones, que es este primer ingrediente aquí
y luego obtenemos una matriz
de todos los ingredientes restantes que pasamos en
y entonces esto, por supuesto, es el resultado de los demás argumentos.
Entonces, nuevamente el primer argumento fue almacenado
en este argumento principal aquí
y luego todos los argumentos restantes que se pasaron
en simplemente se almacenaron en esta matriz
por el parámetro de descanso de la sintaxis, ¿de acuerdo?
Y, por supuesto, también podríamos simplemente definir solo uno.
Así que pidamos ahora una pizza solo con champiñones.
entonces los argumentos restantes aquí simplemente se pondrán
en una matriz vacía porque, por supuesto, no hay ninguno
y entonces no hay nada que recolectar en la matriz
pero todavía obtenemos una matriz vacía
con los que podemos trabajar si queremos.
Entonces, en esa función, ahora podríamos crear algo de lógica.
gusta crear una cadena basada en todos estos ingredientes.
Pero no voy a entrar en eso ahora
pero si quieres divertirte un poco
entonces, por supuesto, siéntase libre de hacerlo usted mismo.
De todos modos, lo que se quita de este ejemplo es que
una vez más el resto de parámetros sirve para recoger
todos los parámetros restantes básicamente no utilizados
que no se utilizaron en este parámetro.
Muy bien, entonces recapitulemos
después de otra tranquila y larga conferencia aquí.
Entonces, la sintaxis de propagación y descanso
ambos se ven exactamente iguales
pero funcionan de manera opuesta
según donde se utilicen.
Entonces se usa el operador de propagación
donde de otro modo escribiríamos valores, separados por una coma.
Por otro lado, el patrón de descanso se usa básicamente
donde de otro modo escribiríamos nombres de variables
separado por comas.
Entonces, nuevamente se puede usar el patrón de descanso
donde escribiríamos los nombres de las variables, separados por comas
y no valores separados por comas.
Así que es una distinción sutil, pero así es como sabes
cuándo y dónde usar esparcir y descansar.