Explicador de Librería
Objetivo de este acertijo: Usar el operador de propagación (...
) para copiar los elementos de un arreglo en otro arreglo.
Tutorial de la solución:
La primera línea de código en este acertijo importa 3 arreglos de código adicional, fiction
, nonFiction
y poetry
, de modo que se pueden usar en este acertijo.
La declaración de la variable allBooks
es un nuevo arreglo que usará el operador de propagación para copiar los elementos de cada uno de los 3 arreglos.
Para completar el acertijo, agrega el operador de propagación antes de nonFictiony
poetry`.
¿Qué sucede si no usamos el operador de propagación?
let arrayOne = [1, 2, 3];
let arrayTwo = [arrayOne, 4, 5, 6]
Sin el operador de propagación, todo el arrayOne
está en arrayTwo[0]
. O decir, arrayTwo
se ve así:
[[1, 2, 3], 4, 5, 6]
en lugar de [1, 2, 3, 4, 5, 6]
. Esto se llama anidar. Sin el operador de propagación, arrayOne
se anida dentro de arrayTwo
.
Solución del código de ejemplo:
import { fiction, nonFiction, poetry } from 'grasshopper.books';
let allBooks = [...fiction, ...nonFiction, ...poetry];
for (let book of allBooks) {
console.log(book.title + ' by ' + book.author);
}
Conceptos de JavaScript: arreglos, operador de propagación
Código adicional (código oculto que se ejecuta antes del código del acertijo):
const poetry= [{ title: 'Death of a Naturalist', author: 'Seamus Heaney' }, { title: 'Omeros', author: 'Derek Walcott' }];
const fiction= [{ title: 'Beloved', author: 'Toni Morrison' }, { title: 'Dubliners', author: 'James Joyce' }];
const nonFiction= [{ title: 'Down and Out in Paris and London', author: 'George Orwell' }, { title: 'A Distant Mirror', author: 'Barbara Tuchman'}];