@body_og

Почему return возвращает undefined из if-else?

return всегда возвращает "undefined", даже если захардкодить в него значение, при этом если это значение вывести в консоль, оно отработает как и ожидалось.

function someFunc () {
    const arr = [
        {
            title: 'some title',
            count: 1,
            price: 25
        }
    ]

    function checkItem(arr, title){
        arr.forEach((item, index)=> {
            if (item.title === title) {
                console.log(index) // выводит индекс искомого элемента
                return index // возвращает undefined
            }
        })
    }

    console.log(checkItem(arr, 'some title'))
}

someFunc ()
  • Вопрос задан
  • 513 просмотров
Решения вопроса 2
@StiflerProger
Потому-что ты делаешь return не из функции someFunc, а из колбека для forEach
Просто замени forEach на:
for (let i = 0; i < arr.length; i++) {
  const item = arr[i];
  if (item.title === title) {
    console.log(i);
    return i;
  }
}
Ответ написан
Комментировать
@zav19791979
или можно найти индекс не через forEach

function someFunc () {
    const arr = [
        {
            title: 'some title',
            count: 1,
            price: 25
        }
    ]

    function checkItem(arr, title) {
        const index = arr.findIndex((item) => item.title === title);
        
        return index === -1 ? 'не удалось найти элемент' : `индекс элемента ${index}`;       
    }

    console.log(checkItem(arr, 'some title'));
    console.log(checkItem(arr, 'some not exist title'));
}

someFunc ()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы