Heim  >  Artikel  >  Web-Frontend  >  Wie glätte ich verschachtelte Objekte mit einer einzigen Zeile JS-Code?

Wie glätte ich verschachtelte Objekte mit einer einzigen Zeile JS-Code?

Susan Sarandon
Susan SarandonOriginal
2024-10-22 13:17:03129Durchsuche

How to Flatten Nested Objects with a Single Line of JS Code?

Verschachtelte Objekte mit einem Einzeiler reduzieren

Das Reduzieren verschachtelter Objekte ist eine häufige Aufgabe in der Programmierung und mit modernem JavaScript sogar noch einfacher . Hier ist eine einzeilige Lösung, die den Spread-Operator und Object.assign verwendet:

Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))

So funktioniert es:

Dieser Code verwendet eine rekursive Funktion, _flatten, Dies durchläuft das verschachtelte Objekt und erstellt ein Array von Objekten mit einer Eigenschaft. Jeder Eigenschaftsname wird seinem entsprechenden Wert zugeordnet, und wenn der Wert ein anderes Objekt ist, rekursiert die Funktion in dieses Objekt.

Der Spread-Operator (...) wird verwendet, um das von _flatten erstellte Array von Objekten zu reduzieren . Das resultierende Array wird dann an Object.assign übergeben, das alle Objekte zu einem einzigen, abgeflachten Objekt zusammenfasst.

Beispieleingabe und -ausgabe:

Betrachten Sie Folgendes verschachtelt Objekt:

{
  a: 2,
  b: {
    c: 3
  }
}

Das Ausführen des bereitgestellten Codes für dieses Objekt führt zum abgeflachten Ergebnis:

{
  a: 2,
  c: 3
}

Hinweis:

Diese Lösung verwendet ES6-Funktionen, daher müssen Sie sie möglicherweise anpassen, wenn Sie eine ältere JavaScript-Umgebung verwenden.

Das obige ist der detaillierte Inhalt vonWie glätte ich verschachtelte Objekte mit einer einzigen Zeile JS-Code?. 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