javascript - 根据另一个数组过滤一个数组

标签 javascript jquery

我有 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/

相关文章:

javascript - 如何在元素外部单击时使用 jquery 隐藏元素

javascript - 根据数字数量输入过滤 div

jquery - 使用 JQuery 为编辑器创建一个新的 "Scope"

javascript - 两架飞机距离很近

javascript - 在 iframe 上使用 javascript 时,Firefox 出现奇怪的行为

javascript - 为什么我的 jqPlot 不渲染 Canvas ?

javascript - jQuery 表单提交返回 false 而不是等待服务器响应

javascript - 由于 head 中的 js 文件等待下载,应用程序无法渲染

javascript - 为什么在删除命名空间事件处理程序后无法添加命名空间事件处理程序?

Javascript - React 解构数组