У меня есть два массива: один Список фильмов, а другой Жанр.
Требование:
Нужно сравнить оба массива и отфильтровать фильмы по жанру.
1.Пример для списка фильмов
movietList = [
{
title: "The Dark Knight",
genre: "Action"
},
{
title: "The Godfather",
genre: "Crime"
},
{
title: "The Shawshank Redemption",
genre: "Drama"
},
]
2.Пример жанра
genre = [Action, Crime, Drama]
3. Ожидаемый результат
result = [
action: {
title: "The Dark Knight"
},
crime: {
title: "The Godfather"
},
drama: {
title: "The Godfather"
}
]
вам понадобится метод array.reduce для группировки фильмов по жанрам
у вас может быть несколько фильмов одного жанра, поэтому сгруппированные элементы должны быть помещены в массив []
var movieList = [
{
title: "The Dark Knight",
genre: "Action"
},
{
title: "The Godfather",
genre: "Crime"
},
{
title: "The Shawshank Redemption",
genre: "Drama"
},
{
title: "The Shawshank Redemption 2",
genre: "Drama"
},
];
let result = movieList.reduce((acc, current) => {
const genre = current.genre.toLowerCase();
(acc[genre] = acc[genre] || []).push({
title: current.title
});
return acc;
}, {});
console.info(result);
const movietList = [
{
title: "The Dark Knight",
genre: "Action"
},
{
title: "The Godfather",
genre: "Crime"
},
{
title: "The Shawshank Redemption",
genre: "Drama"
},
];
const genres = ["Action", "Crime", "Drama"];
const groupBy = (movietList.reduce((acc, {title, genre}) => {
if (!genres.includes(genre)) {
acc[genre] = []
}
else {
acc[genre.toLowerCase()] = {title}
}
return acc;
}, {}));
console.info(Object.entries(groupBy).flat());
1. Ожидаемый результат недействителен. 2. Что делать, если несколько фильмов одного жанра 3. Какие усилия вы приложили для решения?