TMDB API возвращает массив объектов фильма, которые выглядят следующим образом:
{
"vote_count": 1527,
"id": 338952,
"video": false,
"vote_average": 7,
"title": "Fantastic Beasts: The Crimes of Grindelwald",
"popularity": 272.487,
"poster_path": "/uyJgTzAsp3Za2TaPiZt2yaKYRIR.jpg",
"original_language": "en",
"original_title": "Fantastic Beasts: The Crimes of Grindelwald",
"genre_ids": [
10751,
14,
12
],
"backdrop_path": "/xgbeBCjmFpRYHDF7tQ7U98EREWp.jpg",
"adult": false,
"overview": "Gellert Grindelwald has .....",
"release_date": "2018-11-14"
}
Они также предоставляют API для возврата ВСЕХ доступных жанров в массиве объектов с ключом и меткой:
genres": [
{
"id": 28,
"name": "Action"
},
{
"id": 12,
"name": "Adventure"
},
{
"id": 16,
"name": "Animation"
}
]
Что мне нужно сделать, так это получить список всех уникальных жанров из ныне играющего API с их значениями меток.
Так что мой вопрос не столько в том, как это сделать, нокакой самый чистый и эффективный подход.
Моя попытка:
let uniqueIds = new Set(), genres;
// First get all available unique genre IDs from the now playing list
for(var i = 0; i < this.state.items.length; i++){
for(var x = 0; x < this.movies[i].genre_ids.length; x++){
uniqueIds.add(this.movies[i].genre_ids[x])
}
}
// build array of genre objects from unique genre IDs
genres = this.genres.filter((genre) => uniqueIds.has(genre.id));