Heim > Web-Frontend > js-Tutorial > Wie kann ich Objekte in JavaScript-Arrays mithilfe einer benutzerdefinierten „groupBy'-Funktion effizient gruppieren?

Wie kann ich Objekte in JavaScript-Arrays mithilfe einer benutzerdefinierten „groupBy'-Funktion effizient gruppieren?

DDD
Freigeben: 2024-12-30 12:02:14
Original
132 Leute haben es durchsucht

How Can I Efficiently Group Objects in JavaScript Arrays Using a Custom `groupBy` Function?

Objekte in Arrays effektiv gruppieren

Arrays können komplexe Objekte mit mehreren Eigenschaften enthalten, was eine effiziente Gruppierung dieser Objekte basierend auf bestimmten Kriterien erforderlich macht . Underscore.js bietet eine praktische Groupby-Funktion, die jedoch möglicherweise bestimmte Anforderungen nicht erfüllt.

Um eine SQL-ähnliche Gruppierung zu erreichen, bei der Werte zusammengeführt statt geteilt werden, wird oft ein benutzerdefinierter Ansatz bevorzugt. Eine solche Implementierung wird unten vorgestellt:

var groupBy = function(xs, key) {
  return xs.reduce(function(rv, x) {
    (rv[x[key]] = rv[x[key]] || []).push(x);
    return rv;
  }, {});
};
Nach dem Login kopieren

Diese Funktion akzeptiert ein Array xs und einen Gruppierungsschlüssel key. Es durchläuft die Array-Elemente und sammelt sie in einem Ergebnisobjekt rv. Jede Gruppe wird durch den Wert der Schlüsseleigenschaft identifiziert.

Betrachten Sie zur Veranschaulichung das folgende Array von Objekten:

[ 
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" },
    // ... (more objects)
]
Nach dem Login kopieren

Gruppierung nach Phase ergibt:

console.log(groupBy(array, "Phase"));
// => {
//   "Phase 1": [
//     // Objects in Phase 1
//   ],
//   "Phase 2": [
//     // Objects in Phase 2
//   ]
// }
Nach dem Login kopieren

Gruppierung nach Phase und Schritt kombiniert Werte:

console.log(groupBy(array, "Phase", "Step"));
// => {
//   "Phase 1": {
//     "Step 1": [
//       // Objects in Phase 1, Step 1
//     ],
//     "Step 2": [
//       // Objects in Phase 1, Step 2
//     ]
//   },
//   "Phase 2": {
//     // Similar object structure for Phase 2
//   }
// }
Nach dem Login kopieren

Dieser Ansatz bietet eine flexible und effiziente Möglichkeit, Objekte in Arrays zu gruppieren. Durch die Implementierung einer benutzerdefinierten groupBy-Funktion erhalten Sie Kontrolle über die Gruppierungslogik und können diese problemlos erweitern, um komplexere Szenarien zu bewältigen.

Das obige ist der detaillierte Inhalt vonWie kann ich Objekte in JavaScript-Arrays mithilfe einer benutzerdefinierten „groupBy'-Funktion effizient gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage