'Vuex getter returns undefined value

I'm trying to write a getter for my state the problem is that it returns an undefined value but I'm 100% sure that in articleEan is an object that has an Are_EanNr value of 1234567.

This is the getter I'm writing is supposed to return the first object in the articleEan Array that has the same EanNr as the parameter.

const getters = {
  findArByEan: state => {
    return (eancode) => {                   // logging eancode results in 1234567
      state.articleEan.find(item => { 
        return item.Are_EanNr === eancode
      })
    }
  }
}

Where's my mistake?

After Changing it to:

findArByEan: (state) => (eancode) => state.articleEan.find(item => item.Are_EanNr === eancode),

Problem still occurs. This is how I'm calling the getter from a component:

const getters = {
      ...useGetters('vm', [
        'orderRow',
        'customer',
        'article',
        'additionalData',
        'findArByEan',
      ]),
      ...useGetters('user', ['user']),
    };

const Ar = getters.findArByEan.value(eancode.value);  // Ar = undefined

Edit: When looping over the state I'm getting just the indices of the object in array.

log('ArtEan:', artEan.value); // correct output => Array with 38 objects
      for(const item in artEan.value) {
        log(item); // Logs just the index of array
      }


Solution 1:[1]

Your second arrow function does not return anything so it's undefined

const getters = {
  findArByEan: state => {
    return (eancode) => {                   // logging eancode results in 1234567
      return state.articleEan.find(item => { 
        return item.Are_EanNr === eancode
      })
    }
  }
}

You can also do it this way without any return.

const getters = {
  findArByEan: (state) => (eancode) => state.articleEan.find(item => item.Are_EanNr === eancode)
}

I would recommand reading the arrow function documentation.

For example, those 2 functions works the same but one is tidier ;)

const numberSquare1 = (number) => {
  return number * number
}

const numberSquare2 = (number) => number * number

console.log(numberSquare1(2))
console.log(numberSquare2(2))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 RenaudC5