Heim >Web-Frontend >js-Tutorial >Wie gruppiere und summiere ich ein Array von Objekten nach einer Eigenschaft mit jQuery?

Wie gruppiere und summiere ich ein Array von Objekten nach einer Eigenschaft mit jQuery?

Linda Hamilton
Linda HamiltonOriginal
2024-11-17 07:51:03593Durchsuche

How to Group and Sum an Array of Objects by a Property Using jQuery?

Gruppieren und Summieren eines Arrays von Objekten nach einer Eigenschaft

Problem

Bei einem gegebenen Array von Objekten besteht Ihr Ziel darin, sie nach einer bestimmten Eigenschaft zu gruppieren B. Id, und berechnen Sie die Summe einer anderen Eigenschaft, z. B. qty, für jede Gruppe mithilfe von jQuery.

Beispiel

Betrachten Sie das folgende Eingabearray:

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

Die gewünschte Ausgabe ist:

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

Lösung

Um das Array nach ID zu gruppieren und die Mengenwerte für jede Gruppe mithilfe von jQuery zu summieren, können Sie den folgenden Ansatz verwenden:

$(array).groupBy('Id').reduce(function (res, obj) {
  return res + obj.qty;
}, 0);

Hier ist eine Aufschlüsselung der Lösung:

  • groupBy-Plugin von jQuery: Dieses Plugin gruppiert das Array von Objekten basierend auf der angegebenen Eigenschaft Id. Es gibt ein Objekt mit Eigenschaftsschlüsseln zurück, die den eindeutigen ID-Werten entsprechen.
  • Reduzierungsmethode von jQuery: Diese Methode durchläuft das gruppierte Objekt und wendet die angegebene Rückruffunktion an, um die Summe der Mengenwerte zu berechnen für jede Gruppe. In diesem Fall fügt die Callback-Funktion einfach die qty-Eigenschaft jedes Objekts zum Akkumulator hinzu.

Das obige ist der detaillierte Inhalt vonWie gruppiere und summiere ich ein Array von Objekten nach einer Eigenschaft mit jQuery?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn