我有一个如下所示的对象数组。
songs = [
{
track_name: "name of track" ,
track_genres: ["chamber pop","indie pop"] },
{
track_name: "name of track 2" ,
track_genres: ["dutch r&b","indie soul", "indie pop"] },
{
track_name: "name of track 3" ,
track_genres: ["indie pop","chamber pop","indie soul"] }
]
我有另一个看起来像这样的映射对象
genres = [
{
name: "Pop",
children: [{name:"chamber pop"},{name:"indie pop"}]
},
{
name: "R&B",
children: [{name:"dutch r&b"}]
},
{
name: "Soul",
children: [{name:"indie soul"}]
}
]
我想要做的是对于每个曲目,遍历曲目流派,并使用“流派”变量为每个曲目分配父流派。理想情况下,父流派不应重复。
预期输出:
const songs = [
{
track_name: "name of track",
track_genres: ["chamber pop", "indie pop"],
parent_genres: ["Pop"] },
{
track_name: "name of track 2",
track_genres: ["dutch r&b", "indie soul", "indie pop"],
parent_genres: ["R&B","Soul","Pop"] },
{
track_name: "name of track 3",
track_genres: ["indie pop", "chamber pop", "indie soul"],
parent_genres: ["Pop", "Soul"] }
];
songs = [
{
track_name: "name of track" ,
track_genres: ["chamber pop","indie pop"] },
{
track_name: "name of track 2" ,
track_genres: ["dutch r&b","indie soul", "indie pop"] },
{
track_name: "name of track 3" ,
track_genres: ["indie pop","chamber pop","indie soul"] }
]
genres = [
{
name: "Pop",
children: [{name:"chamber pop"},{name:"indie pop"}]
},
{
name: "R&B",
children: [{name:"dutch r&b"}]
},
{
name: "Soul",
children: [{name:"indie soul"}]
}
]
const getParentGenres = (trackGenres) => {
const parentGenres = new Set();
trackGenres.forEach(trackGenre => {
genres.forEach(genre => {
if (genre.children.some(child => child.name === trackGenre)) {
parentGenres.add(genre.name);
}
});
});
return Array.from(parentGenres);
};
const updatedSongs = songs.map(song => ({
...song,
parent_genres: getParentGenres(song.track_genres)
}));
console.log(updatedSongs);