Очень частая ловушка в 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? 😄