No exercício 2, tentei implementar uma msg caso nenhum filme tenha sido lançado no ano pesquisado, porém fiquei muito confuso em como lidar com o array vazio '[ ]' que retorna do método .filter. Poderia me explicar por que utilizando [] no if ternario, o código não interpreta isso como 'vazio' ou false e me retorna como se fosse um valor true?
Aqui o código e os logs pros argumentos:
//lista:
const catalogoFilmes = [
{ id: 1, titulo: "Matrix", diretor: "Lana Wachowski", anoLancamento: 1999 },
{ id: 2, titulo: "Jurassic Park", diretor: "Steven Spielberg", anoLancamento: 1993 },
{ id: 3, titulo: "Inception", diretor: "Christopher Nolan", anoLancamento: 2010 }
]
//função:
function filtrarFilmesPorAno(ano) {
return catalogoFilmes.filter(filme => filme.anoLancamento === ano);
}
//validação:
const filmeEncontrado = filtrarFilmesPorAno();
console.log(filmeEncontrado != [] ? filmeEncontrado : 'Nenhum filme lançado neste ano');
Argumento 'true':
const filmeEncontrado = filtrarFilmesPorAno(1999);
//log:
[
{
id: 1,
titulo: 'Matrix',
diretor: 'Lana Wachowski',
anoLancamento: 1999
}
]
//como esperado!
Argumento 'false':
const filmeEncontrado = filtrarFilmesPorAno(1990);
//log:
[]
//o esperado seria 'Nenhum filme lançado neste ano'
Espero que eu tenha expressado minha dúvida de maneira clara.