Как найти объект в массиве по номеру идентификатора, который находится в другом массиве в этом объекте в vue

Как найти объект в массиве по номеру идентификатора, который находится в другом массиве в этом объекте в vue

20.10.2019 08:29:52 Просмотров 139 Источник

У меня есть массив объектов фильма. Я передаю идентификатор жанра фильма в свое состояние, пытаясь извлечь объект по идентификаторам жанра фильма. Проблема в том, что каждый объект в этом массиве объектов movie имеет свойство с именем genre_ids, которое является другим массивом нескольких идентификаторов, и я передаю только один. У меня возникли проблемы с отображением или найти правильный объект, который имеет этот переданный идентификатор в свойстве genre_id, который является массивом из нескольких идентификаторов...кто-нибудь может помочь?

Вот метод в моем состоянии, в котором я застрял

movieByGenre (state) {
      return (genreId) => {
        return state.popularMovies.find((movie) => {
          movie.genreId.map((id) => {
            return id === genreId
          })
        })
      }
    }

Вот структура данных фильмов

enter image description here

У вопроса есть решение - Посмотреть?

Ответы - Как найти объект в массиве по номеру идентификатора, который находится в другом массиве в этом объекте в vue / How to find object in array by id number which is in another array in that object in vue

Является ответом!
Anthony

20.10.2019 08:35:16

Если я понимаю ваш вариант использования, что-то вроде этого:

function movieByGenre(state) {
  return genreId => {
    const movies = state.popularMovies.filter(movie =>
      movie.genre_ids.includes(genreId)
    );

    return movies[Math.floor(Math.random() * movies.length)];
  };
}

Это использует filter()только для возврата фильмов, которые данный genreIdнаходится в genre_ids. Затем вы можете использовать эту отфильтрованную коллекцию для возврата одного фильма, как вам угодно.

https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284119_58475550
Я дам ему попробовать...
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284161_58475550
filterвозвращает коллекцию, которая, похоже,не является тем, что OP после. Я бы сказал, что вопрос нуждается в большем определении. Например, как выглядит коллекция и что должен вернуть получатель состояния.
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284209_58475550
Геттер состояния должен возвращать объект, массив которого имеет идентификатор, который передается этому методу геттера состояния, я надеюсь, что я разработал этот Райт
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284224_58475550
Все они или только первый матч?
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284251_58475550
первый матч, другими словами, если я ищу драматический фильм в коллекциях фильмов, я хочу, чтобы случайный драматический фильм выплюнул из этой коллекции
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284286_58475550
Я обновил свой ответ с этой новой информацией
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58475550#comment103284740_58475550
Хорошо, первый пример не сработал, я попробую с этим, я думаю, что это должно сработать
Pokreniseweb

20.10.2019 09:25:29

после попытки этого решения я получаю сообщение об ошибке в консоли "Error in render:" TypeError: не удается прочитать свойство "title" undefined""

Примечание: это жестко закодированный идентификатор жанра только для тестирования вещей, которые, как я знаю, существуют в коллекции фильмов

Это мой код компонента, из которого я вызываю метод получения состояния

<template>
  <p>{{movie.title}}</p>
</template>

<script>

export default {
  genreId: "18",

  computed: {
    movie() {
      return this.$store.getters.movieByGenre(this.genreId);
    }
  }
};
</script>
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103284959_58476003
Это просто потому, что при первой загрузке объект movieимеет null, поэтому вы не можете получить доступ titleиз null. Вы можете попробовать {{ movie && movie.title }}
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103285022_58476003
Я никогда не видел эту интерполяцию раньше :) но я дам ему попробовать редактировать: нет, я все еще получаю ту же ошибку
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103285078_58476003
Вы можете просто console.log(this.$store.getters.movieByGenre(this.genreId)); тогда?
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103285244_58476003
Он не определен, поэтому я думаю, что логика получения состояния не очень хороша
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103285283_58476003
Ок, так в этом и проблема. Я не уверен, но вы пишете код exactlyтак же, как @Anthony ответ?
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103285413_58476003
Ребята, проблема была fxxxx строковый тип genre_ids, код Энтони работает после того, как я изменил строку на номер, OMG! EDIT: моя ошибка, все это время я отправлял строку!!!
https://stackoverflow.com/questions/58475507/how-to-find-object-in-array-by-id-number-which-is-in-another-array-in-that-objec/58476003#comment103285457_58476003
О, здорово! Я вижу. Проблема литья типа:')
Закрыть X