Как при методе 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? Зависит от того, какая задача решается и какой результат ожидается.