#javascript #vue.js #return #vuex #undefined
Вопрос:
Я выполняю геттер в VueX, и когда я возвращаю объект для другой функции, у меня есть «неопределенный».
getId: (state) => (LotofID, id) => {
LotofID.points.map(obj => {
if (obj.id === id)
return (obj);
})
В принципе, у меня есть такая функция. Когда я показываю obj
с помощью console.log(obj), у меня здесь есть объект с элементами. И в принципе это работает. Но когда я делаю a return
и пытаюсь получить объект в другой функции
var test = []
selectedRowKeys.map(obj => {
test.push(this.$store.getters.getId(LotofID, obj))
})
console.log(test)
У меня есть «неопределенный» в моей переменной.
У кого-нибудь есть представление о том, в чем может быть проблема
Комментарии:
1.
.map()
преобразует каждый элемент массива/списка во что-то другое, следовательно, каждый путь обратного вызова должен возвращать значение..map()
это абсолютно неправильный инструмент здесь. В обоих фрагментах!2.
Array.prototype.map()
: »map()
Метод создает новый массив, заполненный результатами вызова предоставленной функции для каждого элемента в вызывающем массиве».3. @Andreas хорошо, теперь я понимаю свою ошибку. Моя ошибка, я должен был перечитать карту, прежде чем публиковать
Ответ №1:
Вы должны использовать find
метод вместо map
и вернуть найденный элемент в свой геттер:
getId: (state) => (LotofID, id) => {
return LotofID.points.find(obj => obj.id === id)
}