Fiction Filter pt-br Explainer

Explicação de Filtro de ficção

Objetivo do desafio: Use o método de array .filter() para criar uma nova array que contenha apenas certos elementos de outra array.

Passo a passo da solução: O método de array .filter() é usado para iterar em uma array de elementos e aplicar um teste a cada um deles. Se o elemento passar no teste, então esse elemento é copiado para uma nova array. A array original não é modificada.

A 1ª linha de código neste desafio importa a array bookShelf do código adicional. Esta array contém objetos que têm a propriedade genre definida para 'science fiction' ou 'fantasy'.

A função getSciFi() contém o teste que usaremos no método de array .filter(). Esta função verifica se a propriedade genre é 'science fiction' e retorna true ou false.

A variável sciFi usa esta função como teste para .filter() para fazer iterações pela array bookShelf e copiar somente os elementos que passarem no teste. O laço for…of então imprimirá estes livros no console.

Para concluir o desafio, adicione .filter(getSciFi) ao final de let sciFi = bookShelf.

Solução do código de exemplo:

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);
}

Conceitos de JavaScript: Métodos de array, .filter(), Declarações de variável com let, Laço for…of, Declarações de função, Importações
Código Adicional (código oculto executado antes do código do desafio):

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'
  }
];