Wie kann man ein Array von Objekten gruppieren und summieren? [duplicate]

Lesezeit: 1 Minute

Wie kann man ein Array von Objekten gruppieren und summieren
Phirum

Ich möchte ein Array von Objekten gruppieren Id und summieren Sie die Menge in jQuery. Wie kann ich das erreichen?

Zum Beispiel:

var array = [
  { Id: "001", qty: 1 },
  { Id: "002", qty: 2 },
  { Id: "001", qty: 2 },
  { Id: "003", qty: 4 }
]

Sollte ergeben:

[
  { Id: "001", qty: 3 },
  { Id: "002", qty: 2 },
  { Id: "003", qty: 4 }
]

1646241907 849 Wie kann man ein Array von Objekten gruppieren und summieren
Arun P. Johny

Sie können es wiederholen und zusammenfassen

var array = [
  { Id: "001", qty: 1 }, 
  { Id: "002", qty: 2 }, 
  { Id: "001", qty: 2 }, 
  { Id: "003", qty: 4 }
];

var result = [];
array.reduce(function(res, value) {
  if (!res[value.Id]) {
    res[value.Id] = { Id: value.Id, qty: 0 };
    result.push(res[value.Id])
  }
  res[value.Id].qty += value.qty;
  return res;
}, {});

console.log(result)

Geige: Geige

  • Einstellung qty bis 0 ist wichtig in der res[value.Id] = { qty: 0, Id: value.Id}; Schritt. Andernfalls erhalten Sie doppelte Werte

    – Einfach Lernen

    3. Mai 2017 um 8:53 Uhr


  • Sollte dies nicht var result = array.reduce…. sein, anstatt einen Nebeneffekt zu verwenden?

    – mplungjan

    2. Januar 2019 um 10:39 Uhr

1646241908 35 Wie kann man ein Array von Objekten gruppieren und summieren
Sadikhasan

var newArr = [];

$.each(array,function(index,element){
    if(newArr[element.Id]==undefined){
        newArr[element.Id] =0;
    }
    newArr[element.Id] += element.qty;
});
console.log(newArr);

Demo

  • Sie erstellen kein Array von Objekten

    – mplungjan

    2. Januar 2019 um 10:19 Uhr

  • Dies verwendet element.id als Array-Index, nicht als Objektschlüssel.

    – Baumkon

    19. Dezember 2020 um 10:56 Uhr

914400cookie-checkWie kann man ein Array von Objekten gruppieren und summieren? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy