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, время: 23:52. |