I've got an array of products. The products can be of two types - simcards and devices. I'd like to filter them into one object with 2 values, containing arrays of simcars and devices correspondingly E.g.
const sourceArray = [
{id: 1, name: 'Name', type: 'device'},
{id: 2, name: 'Name2', type: 'simcard'},
{id: 3, name: 'Name3', type: 'device'},
{id: 4, name: 'Name4', type: 'device'}]
Expected result:
const resultObj = {
devices: [
{id: 1, name: 'Name', type: 'device'},
{id: 3, name: 'Name3', type: 'device'},
{id: 4, name: 'Name4', type: 'device'}],
simCards: [{id: 2, name: 'Name2', type: 'simcard'}]
}
I'm trying to do this with reduce
method, but got undefined
arror. Could you assist what's wrong here?
const sourceArray = [{id: 1, name: 'Name', type: 'device'}, {id: 2, name: 'Name2', type: 'simcard'}, {id: 3, name: 'Name3', type: 'device'}, {id: 4, name: 'Name4', type: 'device'}]
sourceArray.reduce((result, orderItem) =>
orderItem.type === 'device' ?
result.devices.push(orderItem) :
result.simCards.push(orderItem), {
devices: [],
simCards: []
})