0

I have a list like this : enter image description here

And I want to collect this list to a other list with collect the same items.

I want new list result like below

    { mold: "T1164021", panchiNumber: 30 }
    { mold: "T2034101", panchiNumber: 8 }
    { mold: "T3726101", panchiNumber: 8 }
    { mold: "T3049021", panchiNumber: 4 }
    { mold: "T1024031", panchiNumber: 36 }
    { mold: "T3099051", panchiNumber: 28 }

Can someone tell me what I should do to get a new list like that?

Thank you for read my post !

Ingo Bürk
  • 19,263
  • 6
  • 66
  • 100
chubinh
  • 25
  • 5
  • Would something like this work? https://stackoverflow.com/questions/29364262/how-to-group-by-and-sum-an-array-of-objects – DJ Burb Jul 26 '21 at 04:46

1 Answers1

1

Try using array.reduce method.

const parentArr = [
    { mold: 'T1164021', panchiNumber: 12},
    { mold: 'T1164021', panchiNumber: 12},
    { mold: 'T1164021', panchiNumber: 6},
    { mold: 'T2034101', panchiNumber: 8},
    { mold: 'T3726101', panchiNumber: 8},
    { mold: 'T3049021', panchiNumber: 4},
    { mold: 'T1024031', panchiNumber: 12},
    { mold: 'T1024031', panchiNumber: 12},
    { mold: 'T1024031', panchiNumber: 12},
    { mold: 'T3099051', panchiNumber: 4},
    { mold: 'T3099051', panchiNumber: 12},
    { mold: 'T3099051', panchiNumber: 12},
]
const newArr = parentArr.reduce((acc, curr) => {
    const node = acc.find((item) => item.mold === curr.mold);
    if (node) {
        node.panchiNumber += curr.panchiNumber;
    } else {
        acc.push(curr);
    }
    return acc;
}, []);
console.log(newArr)
Nitheesh
  • 19,238
  • 3
  • 22
  • 49