0

I have this array of object i want to convert:

let ordNumbers = [
   {"seq":1,"ordNumber":"221"},
   {"seq":1,"ordNumber":"224"},
   {"seq":2,"ordNumber":"221"}
]

to this format

let filteredOrders = [
 {"seq":[1,2],"ordNumber":"221"},
 {"seq":1,"ordNumber":"224"}
 ]

Based on the order numbers i want the above format

rahulpargi
  • 35
  • 6

2 Answers2

2

You mean something like this?

var ordNumbers = [
  {
    "seq": 1,
    "ordNumber": "221"
  },
  {
    "seq": 1,
    "ordNumber": "224"
  },
  {
    "seq": 2,
    "ordNumber": "221"
  }
]

// formatted as { ordNumber: [seq] }
var pairs = ordNumbers.reduce((acc, v) => {
  acc[v.ordNumber] = (acc[v.ordNumber] || []).concat(v.seq);
  return acc;
}, {});

// formatted as [{"seq": [seqs], "ordNumber": ordNumber}]
var res = Object.keys(pairs).map(v => ({
  seq: pairs[v],
  ordNumber: v
}));

console.log(res);
gyohza
  • 736
  • 5
  • 18
0

let ordNumbers = [
   {"seq":1,"ordNumber":"221"},
   {"seq":1,"ordNumber":"224"},
   {"seq":2,"ordNumber":"221"}
]

let ordMap = {}

for (let el of ordNumbers) {
 // if the ordNumber exists in the map then pushing el.seq to it's value else setting el.seq as
 // the value
 ordMap[el.ordNumber] = ordMap[el.ordNumber] ? [...ordMap[el.ordNumber], el.seq] : [el.seq]
}


const result = Object.keys(ordMap).map(val => ({seq: ordMap[val], ordNumber: val}));

console.log(result)
subashMahapatra
  • 6,339
  • 1
  • 20
  • 26