Все истории

🗺 Использовал map(), а получил массив из undefined. Что пошло не так?

Копия публикации из архива канала. Дата и текст сохранены.

Очень частая ловушка в JavaScript:
const numbers = [1, 2, 3];

const doubled = numbers.map(num => {
num * 2;
});

console.log(doubled);

Ожидаем:
[2, 4, 6]

А получаем:
[undefined, undefined, undefined]
И кажется, что map() решил немного поиздеваться 😄

На самом деле map() работает просто: для каждого элемента он вызывает функцию и кладёт в новый массив то, что эта функция вернула.

А наша функция ничего не вернула:
num => {
num * 2;
}

сли у стрелочной функции есть { }, значение нужно вернуть явно:
const doubled = numbers.map(num => {
return num * 2;
});

Или короче:
const doubled = numbers.map(num => num * 2);

Теперь результат:
[2, 4, 6]

📌 Полезно запомнить:
map() ждёт результат от каждого вызова. Нет return → будет undefined.

А если тебе вообще не нужен новый массив и ты просто хочешь что-то сделать с каждым элементом — возможно, тебе нужен forEach().

🔥 Признавайтесь: сколько раз забывали return внутри map() и потом минут десять смотрели на undefined? 😄