使用另一个数组

时间:2018-02-14 21:42:35

标签: javascript

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"]

但是当我这样做时返回一个空数组,任何人都可以帮助解释如何使用数组列表搜索类型数组;归还木乃伊?

提前致谢

2 个答案:

答案 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)