Не определено, когда я возвращаю объект в Javascript

#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)
}