Home > other >  separate json object into different index
separate json object into different index

Time:03-13

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

CodePudding user response:

you can use reduce to group by id and then the values of the resultant using Object.values

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',
         }
        ]
        
let res = Object.values(items.reduce((acc,curr)=> {
    if(!acc[curr.id])acc[curr.id]=[]
  acc[curr.id].push(curr)
  return acc
},{}))

console.log(res)

  • Related