The genres
is a array
so you need to scan the positions for the id==3
search, eg:
var filmes = [{
title: 'Primeiro Filme',
genres: [{
id: 10
},
{
id: 15
},
{
id: 21
}
]
}, {
title: 'Segundo Filme',
genres: [{
id: 10
},
{
id: 3
},
{
id: 21
}
]
},
{
title: 'Terceiro Filme',
genres: [{
id: 15
},
{
id: 3
},
{
id: 7
}
]
}
]
var filmesCategorias = filmes.filter(function(filme) {
for (i = 0; i < filme.genres.length; i++) {
if (filme.genres[i].id == 3) {
return true;
}
}
return false;
})
console.log(filmesCategorias)
The filter command has its compatibility below :
Source: Array.prototype. filter () - Browser Compatibility
By using find
you can simplify the code, but limit its use in browsers as the table below:
Source: Array.prototype. find () - Browser Compatibility
An way without these commands that at some point may limit its use , with two repeat structures may solve the same problem, for example:
var filmes = [{
title: 'Primeiro Filme',
genres: [{
id: 10
},
{
id: 15
},
{
id: 21
}
]
}, {
title: 'Segundo Filme',
genres: [{
id: 10
},
{
id: 3
},
{
id: 21
}
]
},
{
title: 'Terceiro Filme',
genres: [{
id: 15
},
{
id: 3
},
{
id: 7
}
]
}
]
function findFilmeGenresById()
{
var item = Array();
for(i = 0; i < filmes.length; i++)
{
for(j = 0; j < filmes[i].genres.length; j++)
{
if (filmes[i].genres[j].id == 3)
{
item.push(filmes[i]);
break;
}
}
}
return item;
}
console.log(findFilmeGenresById());