I try to sum all “Menge” and “Fehler” values where “Datum” AND “Material” must match. The result should look like an Excel Pivot.
This is my code so far, but I don’t know how to add the second key “Material” that also must match .
I hope you can understand what I try to explain.
var arr = [{
"Datum": {
"date": "2000-01-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"Material": "123",
"Menge": 100,
"Fehler": 5
}, {
"Datum": {
"date": "2000-01-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"Material": "123",
"Menge": 5,
"Fehler": 1
}, {
"Datum": {
"date": "2000-01-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"Material": "123",
"Menge": 6,
"Fehler": 65
}, {
"Datum": {
"date": "2000-01-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"Material": "222",
"Menge": 10,
"Fehler": 5
}, {
"Datum": {
"date": "2000-01-02 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"Material": "444",
"Menge": 29,
"Fehler": 1
}, {
"Datum": {
"date": "2000-01-02 00:00:00.000000",
"timezone_type": 3,
"timezone": "Europe/Berlin"
},
"Material": "123",
"Menge": 1,
"Fehler": 1
}]
const result = Object.values(arr.reduce((acc, obj) => {
const [Datum] = obj.Datum.date.split(' ');
const Menge = (acc[Datum] ?.Menge + obj.Menge) || obj.Menge;
const Fehler = (acc[Datum] ?.Fehler + obj.Fehler) || obj.Fehler;
acc[Datum] = {
Datum,
Menge,
Fehler
};
return acc;
}, {}));
console.log(result)
But the result should look like:
[{
"Datum": "2000-01-01",
"Material": "123",
"Menge": 111,
"Fehler": 71
},
{
"Datum": "2000-01-01",
"Material": "222",
"Menge": 10,
"Fehler": 5
},
{
"Datum": "2000-01-02",
"Material": "444",
"Menge": 29,
"Fehler": 1
},
{
"Datum": "2000-01-02",
"Material": "123",
"Menge": 1,
"Fehler": 1
}
]
Thank you very much