Einführung
In diesem Lab werden wir untersuchen, wie man verschachtelte Objekteigenschaften in JavaScript mithilfe einer gegebenen Pfadzeichenfolge abruft. Wir werden lernen, wie man verschiedene Array-Methoden wie map(), filter() und reduce() verwendet, um bestimmte Werte aus komplexen Objekten zu extrahieren. Diese Fähigkeit ist unerlässlich für die Arbeit mit großen Datensätzen und APIs, die verschachtelte JSON-Objekte zurückgeben.
Wie man verschachtelte Objekteigenschaften aus Pfadzeichenfolgen abruft
Um das Programmieren zu üben, öffnen Sie das Terminal/SSH und geben Sie node ein.
Die folgende Funktion ruft eine Reihe von Eigenschaften aus einem Objekt mithilfe von Selektoren ab, die in einer Pfadzeichenfolge angegeben sind. Um dies zu erreichen, befolgen Sie diese Schritte:
- Verwenden Sie
Array.prototype.map(), um durch jeden Selektoren zu iterieren, und wenden SieString.prototype.replace()an, um eckige Klammern durch Punkte zu ersetzen. - Verwenden Sie
String.prototype.split(), um jeden Selektoren in ein Array von Zeichenfolgen aufzuteilen. - Verwenden Sie
Array.prototype.filter(), um alle leeren Werte zu entfernen. - Verwenden Sie
Array.prototype.reduce(), um den von jedem Selektoren angegebenen Wert abzurufen.
Hier ist die Funktion:
const get = (from, ...selectors) =>
[...selectors].map((s) =>
s
.replace(/\[([^\[\]]*)\]/g, ".$1.")
.split(".")
.filter((t) => t !== "")
.reduce((prev, cur) => prev && prev[cur], from)
);
Sie können diese Funktion verwenden, um Werte aus einem verschachtelten Objekt mithilfe einer Pfadzeichenfolge abzurufen. Hier ist ein Beispiel:
const obj = {
selector: { to: { val: "val to select" } },
target: [1, 2, { a: "test" }]
};
get(obj, "selector.to.val", "target[0]", "target[2].a");
// ['val to select', 1, 'test']
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab "Get Nested Object Property From Path String" abgeschlossen. Sie können in LabEx weitere Labs üben, um Ihre Fähigkeiten zu verbessern.