var movies = [{
title: "Mission Impossible 2",
year: 2000,
rating: 5,
genre: ["Action"]
}, {
title: "The Mummy",
year: 1999,
rating: 6,
genre: ["Action", "Comedy"]
}]
var list = "Action"
console.log(movies.filter(function (movie) {
return isInSet(list, movie);
}))
console.log(movies.filter(isInSet.bind(null, list)))
function isInSet(set, item) {
return set.indexOf(item.genre) > -1;
}
这将导致无法完成任务
现在我想做的是将列表更改为
var list = ["Action", "Comedy"]
但是当我这样做时返回一个空数组,任何人都可以帮助解释如何使用数组列表搜索类型数组;归还木乃伊?
提前致谢
答案 0 :(得分:0)
假设您要求列表中的每个流派都包含在电影的流派中以进行匹配,您可以使用数组.filter
,.every
和{{1}的组合获取匹配项列表的方法:
.includes

答案 1 :(得分:0)
将搜索条件中的所有项目与每部电影的genre
进行比较,如果找到所有项目,则返回true
。
可以使用.every()
完成此操作。
var movies = [{
title: "Mission Impossible 2",
year: 2000,
rating: 5,
genre: ["Action"]
}, {
title: "The Mummy",
year: 1999,
rating: 6,
genre: ["Action", "Comedy"]
}];
var data = ["Action", "Comedy"];
var result = movies.filter(m =>
data.every(s => m.genre.includes(s))
);
console.log(result)