3
respostas

Resolução Desafio 2:

const catalogoFilmes = [
    { id: 1, titulo: "Matrix", diretor: "Lana Wachowski", anoLancamento: 1999 },
    { id: 2, titulo: "Jurassic Park", diretor: "Steven Spielberg", anoLancamento: 1999 },
    { id: 3, titulo: "Inception", diretor: "Christopher Nolan", anoLancamento: 2010 }
];

function filtraFilmesPorAno(ano) {
    console.log(`Filmes que lançaram em ${ano}:`);
    let filmesFiltrados = catalogoFilmes.filter((filme) => filme['anoLancamento'] === ano);
    return filmesFiltrados.length < 1 ? 'Nenhum': filmesFiltrados;
}


console.log(filtraFilmesPorAno(1999)); // 2 filmes
console.log(filtraFilmesPorAno(2010)); // 1 filme
console.log(filtraFilmesPorAno(2006)); // Nenhum filme 
3 respostas

Oi Mateus,

Seu código está bem estruturado e resolve o desafio proposto de forma eficiente, utilizando o método filter para encontrar os filmes por ano de lançamento. A lógica para retornar "Nenhum" quando não há filmes correspondentes também está correta.

Uma pequena sugestão seria, em vez de retornar a string "Nenhum", retornar um array vazio ([]). Isso manteria a consistência do tipo de retorno da função e facilitaria o uso do resultado em outras partes do seu código, caso necessário. Por exemplo, você poderia usar o método length diretamente no retorno da função sem precisar verificar se é um array ou uma string.

Exemplo:

function filtraFilmesPorAno(ano) {
    console.log(`Filmes que lançaram em ${ano}:`);
    let filmesFiltrados = catalogoFilmes.filter(filme => filme['anoLancamento'] === ano);
    return filmesFiltrados.length < 1 ? [] : filmesFiltrados;
}

Dessa forma, você poderia usar o retorno da função diretamente em um loop ou condição, sem precisar de tratamentos adicionais para o caso de não haver filmes.

Boa tarde, Obrigado pela sugestão, mas o método filter já não devolve uma string vazia se não encontrar o elemento buscado ? logo não seria necessário o operador ternário ?

Obrigado