Reputation: 55
I have following array which consist of json objects:
items = [
{
id: '1',
name: 'Josh',
transactionDate: '2012-08-10',
creditAmount: '200',
numberBank: '12345',
},
{
id: '1',
name: 'Josh',
transactionDate: '2012-08-14',
creditAmount: '159',
numberBank: '12345',
},
{
id: '1',
name: 'Josh',
transactionDate: '2012-08-15',
creditAmount: '3421',
numberBank: '12345',
},
{
id: '2',
name: 'George',
transactionDate: '2012-09-15',
creditAmount: '6000',
numberBank: '13345',
},
{
id: '2',
name: 'George',
transactionDate: '2012-09-16',
creditAmount: '6565',
numberBank: '13345',
}
]
I want to separate the array index for each same id
as an example :
[
{
id: '1',
name: 'Josh',
transactionDate: '2012-08-10',
creditAmount: '200',
numberBank: '12345',
},
{
id: '1',
name: 'Josh',
transactionDate: '2012-08-14',
creditAmount: '159',
numberBank: '12345',
},
{
id: '1',
name: 'Josh',
transactionDate: '2012-08-15',
creditAmount: '3421',
numberBank: '12345',
}
],
[
{
id: '2',
name: 'George',
transactionDate: '2012-09-15',
creditAmount: '6000',
numberBank: '13345',
},
{
id: '2',
name: 'George',
transactionDate: '2012-09-16',
creditAmount: '6565',
numberBank: '13345',
}
]
How to do like that ? thanks
Upvotes: 1
Views: 158
Reputation: 10247
you can use reduce
to group by id
and then the values of the resultant using Object.values
EDIT
??=
is the Logical nullish assignment. The right hand side will be assigned whenever the left hand side is null
or undefined
.
let items = [ { id: '1', name: 'Josh', transactionDate: '2012-08-10', creditAmount: '200', numberBank: '12345', }, { id: '1', name: 'Josh', transactionDate: '2012-08-14', creditAmount: '159', numberBank: '12345', }, { id: '1', name: 'Josh', transactionDate: '2012-08-15', creditAmount: '3421', numberBank: '12345', }, { id: '2', name: 'George', transactionDate: '2012-09-15', creditAmount: '6000', numberBank: '13345', }, { id: '2', name: 'George', transactionDate: '2012-09-16', creditAmount: '6565', numberBank: '13345', } ]
const res = Object.values(items.reduce((acc,curr)=> {
acc[curr.id]??=[] //similar to acc[curr.id] = acc[curr.id] || [] in this case
acc[curr.id].push(curr)
return acc
},{}))
console.log(res)
Upvotes: 4