Как при методе map получается undifined?

const items = [{ price: -50 }, { price: 50 }, { price: '100' }, { price: 100 }];

let result = items.map(({ price }) => {
  price;
  if (price > 0) console.log(price);
});

console.log(result);

50 100 100 [ undefined, undefined, undefined, undefined ]

Почему при выводе появляется еще и массив [ undefined, undefined, undefined, undefined ] , откуда и почему он выводиться ? Как его убрать можно ?


Ответы (1 шт):

Автор решения: Алексей Шиманский

callback-функция в map должна что-то возвращать. Т.к. принудительно ничего не указано (не прописан return), то по умолчанию функция всегда возвращает undefined. В итоге map пробегается по 4-ём элементам и под капотом складывает 4 undefined в массив, который в итоге и возвращается в виде result (map, напомню, возвращает массив ровно по тому количеству элементов, сколько было на входе)


Как его убрать можно ?

Как минимум возвращать значения.

А вообще, может тут и не нужен map? Зависит от того, какая задача решается и какой результат ожидается.

→ Ссылка