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; }, {}); };
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) ]
Gruppierung nach Phase ergibt:
console.log(groupBy(array, "Phase")); // => { // "Phase 1": [ // // Objects in Phase 1 // ], // "Phase 2": [ // // Objects in Phase 2 // ] // }
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 // } // }
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!