Explicação de Maratona de filmes
Objetivo deste desafio: Usar o método de array .forEach()
para alterar o valor de cada item dela.
Passo a passo da solução: O método de array .forEach()
usa uma função como argumento (também conhecido como função retorno de chamada) e faz a iteração pela array usando cada item como argumento para o retorno de chamada.
A primeira linha de código importa uma array de objetos de código adicional, movieQueue
, para que possa ser usado neste desafio. Cada objeto em movieQueue
tem uma propriedade title
e uma propriedade hasWatched
. A propriedade hasWatched
de cada item é falsa.
Em seguida, a função checkIfSeen
é declarada. Ela pega um argumento, movie
e imprime suas propriedades title
e hasWatched
no console. Essa função é usada como retorno de chamada em dois métodos .forEach()
, mais tarde em nosso código.
Abaixo da função checkIfSeen
, a função markAsWatched
é declarada. Ela pega um argumento, movie
e define sua propriedade hasWatched
como verdadeira. Usaremos essa função como argumento para um método .forEach()
que acrescentaremos ao nosso código.
Neste desafio, você usará o método .forEach()
e a função markAsWatched
para mudar a propriedade hasWatched
dos itens em movieQueue
de falso para verdadeiro.
Para concluir o desafio, adicione o método .forEach(markAsWatched)
após o movieQueue
que está sozinho em sua própria linha. Agora, todas as propriedades hasWatched
dos itens em movieQueue
serão verdadeiras. Os métodos anteriores e posteriores .forEach(checkIfSeen)
nos permitem ver que a propriedade hasWatched
de cada item mudou de falsa para verdadeira.
Solução do código de exemplo:
(Toque abaixo para revelar)
import { movieQueue } from 'grasshopper.movies';
function checkIfSeen(movie) {
console.log('Watched ' + movie.title + ': ' + movie.hasWatched);
}
function markAsWatched(movie) {
movie.hasWatched = true;
}
movieQueue.forEach(checkIfSeen);
movieQueue.forEach(markAsWatched);
movieQueue.forEach(checkIfSeen);
Conceitos de JavaScript: Métodos de array, .filter()
, Objetos, Declarações de funções, Importações
Código Adicional (código oculto executado antes do código do desafio):
const movieQueue = [{
title: 'HopGun',
hasWatched: false
},
{
title: 'Hoppy Gilmore',
hasWatched: false
},
{
title: 'Mission Im-hop-ible',
hasWatched: false
}
];