I have this array of objects working fine obtained from an API in mounted
in Vue.
0:
author: (...)
genre: ("Rock")
poster: (...)
title: (...)
year: (...)
1:
author: (...)
genre: ("Pop")
poster: (...)
title: (...)
year: (...)
2:
author: (...)
genre: ("Jazz")
poster: (...)
title: (...)
year: (...)
3:
author: (...)
genre: ("Rock")
poster: (...)
title: (...)
year: (...)
4:
author: (...)
genre: ("Pop")
poster: (...)
title: (...)
year: (...)
5:
author: (...)
genre: ("Jazz")
poster: (...)
title: (...)
year: (...)
6:
author: (...)
genre: ("Rock")
poster: (...)
title: (...)
year: (...)
7:
author: (...)
genre: ("Pop")
poster: (...)
title: (...)
year: (...)
8:
author: (...)
genre: ("Jazz")
poster: (...)
title: (...)
year: (...)
9:
author: (...)
genre: ("Jazz")
poster: (...)
title: (...)
year: (...)
I have this <select>
that I want to fill with the genre
seen in the previous array, but without repetitions.
<div class="select-genre">
<label for="genre">Genre</label>
<select id="genre" name="genre">
<option value="">Seleziona</option>
<option v-for="(element, index) in cds" :value="cds.genre">{{ element.genre }}</option>
</select>
</div>
The way I did in HTML prints every genre with repetitions, so my idea was to filter the original array to obtain a new one with only the three genres present once.
The problem is the original array populates itself after the filter, I've seen its console.log
after the filter one, so I did this way to prevent this thing.
if (this.cds.length == 10) {
const genres = this.cds.filter((element) => {
return element.genre != element.genre;
}
So it starts to filter only when the original array contains 10 elements.
Outside of my if statement
I've written:
this.genreArray = [...genres];
console.log('Genere', this.genreArray);
To obtain the genre of the element
only when it's different and then I would have saved const genres
inside an empty array in data
, that is genreArray
, to obtain the new array with the genres repeated once.
Where have I been wrong?