Einführung
In diesem Lab werden wir untersuchen, wie man in JavaScript Rekursion verwendet, um alle falschen Werte tiefgehend aus einem Objekt oder einem Array zu entfernen. Wir werden eine Funktion erstellen, die ein Objekt oder ein Array als Eingabe nimmt und ein neues, kompaktes Objekt oder Array mit nur wahren Werten zurückgibt. Diese Technik kann nützlich sein, um Daten in verschiedenen Programmieranwendungen zu bereinigen und zu vereinfachen.
Kompaktierungsalgorithmus für Objekte
Um alle falschen Werte tiefgehend aus einem Objekt oder einem Array zu entfernen, verwenden Sie folgenden Algorithmus:
- Verwenden Sie Rekursion, um die
compactObject()-Funktion auf jedes geschachtelte Objekt oder Array aufzurufen. - Initialisieren Sie die iterierbare Daten mithilfe von
Array.isArray(),Array.prototype.filter()undBoolean(). Dies wird getan, um spärliche Arrays zu vermeiden. - Verwenden Sie
Object.keys()undArray.prototype.reduce(), um über jede Schlüssel mit einem geeigneten Anfangswert zu iterieren. - Verwenden Sie
Boolean(), um die Wahrheit eines jeden Schlüsselwerts zu bestimmen und ihn dem Akkumulator hinzuzufügen, wenn er wahr ist. - Verwenden Sie
typeof, um zu bestimmen, ob ein gegebener Wert einobjectist, und rufen Sie die Funktion erneut auf, um es tiefgehend zu kompaktieren.
Hier ist der Code für die compactObject()-Funktion:
const compactObject = (val) => {
const data = Array.isArray(val) ? val.filter(Boolean) : val;
return Object.keys(data).reduce(
(acc, key) => {
const value = data[key];
if (Boolean(value))
acc[key] = typeof value === "object" ? compactObject(value) : value;
return acc;
},
Array.isArray(val) ? [] : {}
);
};
Um diese Funktion zu verwenden, übergeben Sie ein Objekt oder ein Array als Argument an compactObject(). Die Funktion wird ein neues Objekt oder Array zurückgeben, aus dem alle falschen Werte entfernt wurden.
Beispiel:
const obj = {
a: null,
b: false,
c: true,
d: 0,
e: 1,
f: "",
g: "a",
h: [null, false, "", true, 1, "a"],
i: { j: 0, k: false, l: "a" }
};
compactObject(obj);
// { c: true, e: 1, g: 'a', h: [ true, 1, 'a' ], i: { l: 'a' } }
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Compact Object Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.