Есть два массива. В одном массиве содержатся выбранные пользователем теги (жанры кино), а во втором массиве находятся сами фильмы .
Примерная структура массивов :
//массив с фильмами
data = [
{"title" : "фильм1", "tags" : ["драма", "мистика"]},
{"title" : "фильм2", "tags" : ["драма", "боевик"]},
{"title" : "фильм3", "tags" : ["ужасы", "боевик"]}
]
//массив с искомыми жанрами
selectedTags = ["драма"]
//result возвращает пустой массив, а ожидалось что будет с фильм1 и фильм2
let result = data.filter( e => selectedTags.includes(e.tags) );
//result возвращает false
let result = data.some( e => selectedTags.indexOf(e.tags) >= 0);
let data = [
{"title" : "фильм1", "tags" : ["драма", "мистика"]},
{"title" : "фильм2", "tags" : ["драма", "боевик", "бубу"]},
{"title" : "фильм3", "tags" : ["ужасы", "боевик"]}
];
let selectedTags = ["ужасы", "бубу"];
let result = data.filter( ({tags: arr}) => arr.some( tag => selectedTags.includes(tag) ) );
console.log( result );
А для строгой фильтрации:
let data = [
{"title" : "фильм1", "tags" : ["драма", "мистика"]},
{"title" : "фильм2", "tags" : ["драма", "боевик", "бубу"]},
{"title" : "фильм3", "tags" : ["ужасы", "боевик"]}
];
let selectedTags = ["боевик", "бубу"];
let result = data.filter( movie => selectedTags.every( tag => movie.tags.includes(tag) ) );
console.log( result );
Хотя на самом деле я бы предпочел чуть длинный классический цикл, чем вникать в эльфийский код)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости