Как отфильтровать карточки по значению свойства объекта?

Есть объект с героями.У каждого героя есть ключ movies - это массив с фильмами, где участвовал данный герой. Мне необходимо найти всех героев, у которых в movies есть значение === выбранному значению из выпадающего списка и вывести ВСЕХ героев, у которых в movies есть такой фильм. Нюанс в том, что несколько героев могли сниматься в одном и том же movies, поэтому нужно получить и вывести на экран ВСЕХ героев по данному критерию. Значения из выпадающего списка - это список фильмов.

[
  {
    "name": "Ancient One",
    "species": "human",
    "gender": "Female",
    "birthDay": "1316",
    "deathDay": "2017",
    "status": "deceased",
    "actors": "Tilda Swinton",
    "photo": "dbimage/DS_Ancient_One_Poster_cropped.png",
    "movies": [
      "Doctor Strange",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Ant-Man",
    "realName": "Scott Edward Harris Lang",
    "species": "human",
    "citizenship": "American",
    "gender": "male",
    "status": "alive",
    "actors": "Paul Rudd",
    "photo": "dbimage/AntMan-EndgameProfile.jpg",
    "movies": [
      "Ant-Man",
      "Captain America: Civil War",
      "Ant-Man and the Wasp",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Black Panther",
    "realName": "T'Challa",
    "species": "human",
    "citizenship": "Wakandan",
    "gender": "male",
    "status": "alive",
    "actors": "Chadwick Boseman",
    "photo": "dbimage/Black_Panther_AIW_Profile.jpg",
    "movies": [
      "Captain America: Civil War",
      "Black Panther",
      "Avengers: Infinity War",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Black Widow",
    "realName": "Natalia Alianovna Romanoff",
    "species": "human",
    "citizenship": "Soviet",
    "gender": "female",
    "birthDay": "1984",
    "deathDay": "2014",
    "status": "alive",
    "actors": "Scarlett Johansson",
    "photo": "dbimage/BlackWidow-EndgameProfile.jpg",
    "movies": [
      "Iron Man 2",
      "The Avengers",
      "Captain America: The Winter Soldier",
      "Avengers: Age of Ultron",
      "Captain America: Civil War",
      "Avengers: Infinity War",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Captain America",
    "realName": "Steven Grant Rogers",
    "species": "human",
    "citizenship": "British",
    "gender": "male",
    "birthDay": "1918",
    "status": "alive",
    "actors": "Chris Evans",
    "photo": "dbimage/CapAmerica-EndgameProfile.jpg",
    "movies": [
      "Captain America: The First Avenger",
      "The Avengers",
      "Captain America: The Winter Soldier",
      "Avengers: Age of Ultron",
      "Captain America: Civil War",
      "Avengers: Infinity War",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Captain Marvel",
    "realName": "Carol Danvers",
    "species": "human",
    "citizenship": "American",
    "gender": "female",
    "status": "alive",
    "actors": "Brie Larson",
    "photo": "dbimage/CapMarvel-EndgameProfile.jpg",
    "movies": [
      "Captain Marvel",
      "Avengers: Endgame"
    ]
  }
  ]

Ответы (1 шт):

Автор решения: Yaroslav Molchan

Самый простой вариант как по мне использовать filter, в нём уже includes:

var heroes = [
  {
    "name": "Ancient One",
    "species": "human",
    "gender": "Female",
    "birthDay": "1316",
    "deathDay": "2017",
    "status": "deceased",
    "actors": "Tilda Swinton",
    "photo": "dbimage/DS_Ancient_One_Poster_cropped.png",
    "movies": [
      "Doctor Strange",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Ant-Man",
    "realName": "Scott Edward Harris Lang",
    "species": "human",
    "citizenship": "American",
    "gender": "male",
    "status": "alive",
    "actors": "Paul Rudd",
    "photo": "dbimage/AntMan-EndgameProfile.jpg",
    "movies": [
      "Ant-Man",
      "Captain America: Civil War",
      "Ant-Man and the Wasp",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Black Panther",
    "realName": "T'Challa",
    "species": "human",
    "citizenship": "Wakandan",
    "gender": "male",
    "status": "alive",
    "actors": "Chadwick Boseman",
    "photo": "dbimage/Black_Panther_AIW_Profile.jpg",
    "movies": [
      "Captain America: Civil War",
      "Black Panther",
      "Avengers: Infinity War",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Black Widow",
    "realName": "Natalia Alianovna Romanoff",
    "species": "human",
    "citizenship": "Soviet",
    "gender": "female",
    "birthDay": "1984",
    "deathDay": "2014",
    "status": "alive",
    "actors": "Scarlett Johansson",
    "photo": "dbimage/BlackWidow-EndgameProfile.jpg",
    "movies": [
      "Iron Man 2",
      "The Avengers",
      "Captain America: The Winter Soldier",
      "Avengers: Age of Ultron",
      "Captain America: Civil War",
      "Avengers: Infinity War",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Captain America",
    "realName": "Steven Grant Rogers",
    "species": "human",
    "citizenship": "British",
    "gender": "male",
    "birthDay": "1918",
    "status": "alive",
    "actors": "Chris Evans",
    "photo": "dbimage/CapAmerica-EndgameProfile.jpg",
    "movies": [
      "Captain America: The First Avenger",
      "The Avengers",
      "Captain America: The Winter Soldier",
      "Avengers: Age of Ultron",
      "Captain America: Civil War",
      "Avengers: Infinity War",
      "Avengers: Endgame"
    ]
  },
  {
    "name": "Captain Marvel",
    "realName": "Carol Danvers",
    "species": "human",
    "citizenship": "American",
    "gender": "female",
    "status": "alive",
    "actors": "Brie Larson",
    "photo": "dbimage/CapMarvel-EndgameProfile.jpg",
    "movies": [
      "Captain Marvel",
      "Avengers: Endgame"
    ]
  }
];

var selectedMovie = 'Avengers: Endgame';
var filtered = heroes.filter(function (hero) {
  return hero.movies.includes(selectedMovie);
});

console.log(filtered);

→ Ссылка