Fiction Filter es-419 Explainer

Explicador de Filtro de ficción

Objetivo de este acertijo: Usar el método de arreglo .filter() para crear un nuevo arreglo que solo contiene elementos específicos del otro arreglo.

Tutorial de la solución: El método de arreglo .filter() se usa para iterar por un arreglo de elementos y aplicar una prueba a cada uno. Si el elemento pasa la prueba, entonces se copia en un nuevo arreglo. El arreglo original no se modifica.

La primera línea de código en este acertijo importa el arreglo bookShelf de código adicional. Este arreglo contiene objects que tienen la propiedad genre definida en 'science fiction' o 'fantasy'.

La función getSciFi() contiene la prueba que usaremos en el método de arreglo .filter(). Esta función verificará si la propiedad genre es 'science fiction', y devolverá true o false.

La variable sciFi usará esta función como la prueba para que .filter() itere por el arreglo bookShelf y solo copie los elementos que pasen la prueba. El for…of loop luego imprimirá estos libros en la consola.

Para completar el acertijo, agrega .filter(getSciFi) al final de let sciFi = bookShelf.

Solución del código de ejemplo:

import { bookShelf } from 'grasshopper.books';

function getSciFi(book) {
    return book.genre === 'science fiction';
}

let sciFi = bookShelf.filter(getSciFi);

for (let book of sciFi) {
    console.log(book.title + ' by ' + book.author);
}

Conceptos de JavaScript: métodos de arreglo, .filter(), declaraciones de la variable con let, for…of loops, declaraciones de funciones, importaciones
Código adicional (código oculto que se ejecuta antes del código del acertijo):

const bookShelf = [
  {
    title: 'The Chamber of Secrets',
    author: 'JK Rowling',
    genre: 'fantasy'
  },
  {  
    title: 'Discworld',
    author: 'Terry Pratchett',
    genre: 'fantasy'
  },
  {
    title: 'Jonathan Strange & Mr Norrell',
    author: 'Susanna Clarke',
    genre: 'fantasy'
  },
  {
    title: 'The Hitchhiker\'s Guide to the Galaxy',
    author: 'Douglas Adams',
    genre: 'science fiction'
  },
  {
    title: 'Dune',
    author: 'Frank Herbert',
    genre: 'science fiction'
  }
];