javascript reduce
Есть массив объектов. Его надо фильтрануть, а к фильтрованным объектам добавить новые св-ва. Чтобы бегать по массиву 2 раза (filter+map) решил восп. reduce:
let arr = arr_old.reduce((a, b, i, array)=>{ if(b.offer_type === '1'){ return a.push( Object.assign({}, b, { user_name: `${b.user_name}, loading: false }) ) } },[]) Но Хром ругается: Uncaught TypeError: Cannot read property 'push' of undefined Вывожу a консольлогом - действительно андефайнид Что не так? |
daima,
return не тот и не там |
Цитата:
|
daima,
let arr = arr_old.reduce((a, b, i, array)=>{ if(b.offer_type === '1'){ a.push( Object.assign({}, b, { user_name: `${b.user_name}`, loading: false }) ) }; return a },[]) |
Хмм.. a же типа андефайнид. Сделал так, вроде фурычит
let arr = arr_old.reduce((a=[], b, i, array)=>{ if(b.offer_type === '1'){ return [...a, Object.assign({}, b, { user_name: `${b.user_name}`, loading: false }) ] } else return a },[]) |
daima,
ошибка где? "use strict" let arr_old = [{offer_type : 0, user_name : "x"}, {offer_type : "1" , user_name : "y"}]; let arr = arr_old.reduce((a, b, i, array)=>{ if(b.offer_type === '1'){ a.push( Object.assign({}, b, { user_name: `${b.user_name}`, loading: false }) ) }; return a },[]) console.log(arr) |
Часовой пояс GMT +3, время: 04:48. |