我有 2 个这样的数组......
var heroes = [{
name: "Batman",
franchise: "DC"
},
{
name: "Ironman",
franchise: "Marvel"
},
{
name: "Thor",
franchise: "Marvel"
},
{
name: "Superman",
franchise: "DC"
}
];
var stars = ["Thor", "Superman"];
var marvelHeroes = heroes.filter(function(hero) {
return stars.indexOf(hero.name) >= 0;
});
console.log(marvelHeroes);
此代码返回“未定义”。所以基本上我试图根据另一个数组中的值过滤一个数组。
有人可以告诉我我做错了什么吗?谢谢
我预期的输出是一个对象数组,如下所示......
[
{name: "Thor", franchise: "Marvel"},
{name: "Superman", franchise: "DC"}
];
我看过类似的问题here ,但该解决方案对我不起作用 ...
最佳答案
应该只是 return stars.indexOf(item.name) !== -1 ;
演示
var heroes = [
{name: "Batman", franchise: "DC"},
{name: "Ironman", franchise: "Marvel"},
{name: "Thor", franchise: "Marvel"},
{name: "Superman", franchise: "DC"}
];
var stars = ["Thor","Superman"];
var filtered = heroes.filter(function(item) {
return stars .indexOf(item.name) !== -1 ;
});
console.log(filtered);
关于javascript - 根据另一个数组过滤一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50784312/