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
Advertisement
Answer
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)