Как найти объект в массиве по номеру идентификатора, который находится в другом массиве в этом объекте в vue
У меня есть массив объектов фильма. Я передаю идентификатор жанра фильма в свое состояние, пытаясь извлечь объект по идентификаторам жанра фильма. Проблема в том, что каждый объект в этом массиве объектов movie имеет свойство с именем genre_ids, которое является другим массивом нескольких идентификаторов, и я передаю только один. У меня возникли проблемы с отображением или найти правильный объект, который имеет этот переданный идентификатор в свойстве genre_id, который является массивом из нескольких идентификаторов...кто-нибудь может помочь?
Вот метод в моем состоянии, в котором я застрял
movieByGenre (state) {
return (genreId) => {
return state.popularMovies.find((movie) => {
movie.genreId.map((id) => {
return id === genreId
})
})
}
}
Вот структура данных фильмов


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

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
. Затем вы можете использовать эту отфильтрованную коллекцию для возврата одного фильма, как вам угодно.


filter
возвращает коллекцию, которая, похоже,не является тем, что OP после. Я бы сказал, что вопрос нуждается в большем определении. Например, как выглядит коллекция и что должен вернуть получатель состояния.






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>

movie
имеет null
, поэтому вы не можете получить доступ title
из null
. Вы можете попробовать {{ movie && movie.title }}


console.log(this.$store.getters.movieByGenre(this.genreId));
тогда?


exactly
так же, как @Anthony ответ?

