flachende verschachtelte Objekte mit einem One-Liner
In JavaScript entsteht die Aufgabe, verschachtelte Objekte zu verflachten. Diese Operation beinhaltet die Umwandlung eines komplexen Objekts mit verschachtelten Ebenen in ein einstufiges Objekt. Während es verschiedene Ansätze gibt, um dies zu erreichen, werden wir uns mit einer Einzeilenlösung befassen, die moderne JavaScript-Funktionen nutzt. Es kombiniert ein Array von One-Property-Objekten, die durch eine rekursive Funktion (_flatten) erstellt wurden. Diese Funktion durchquert jeden Schlüssel im Eingabefiel und ruft sich entweder auf, wenn der Wert ein anderes Objekt ist oder ein Objekt mit einem einzelnen Eigenschaftspaar ansonsten erstellt. 'Objekt'? A: 2, B: { C: 3 } }
, die dieses Objekt ausflättert:
{ A: 2, C: 3 }
Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))Vorteile:
concISIness:
erreicht Objekte, die sich in einer einzelnen Zeile von Code verflachten. Undercore.Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))
Flexibilität:
verwendet eine rekursive Funktion (_flatten), um nistete Strukturen dynamisch umzugehen. Wie Object.Sign und der Spread Operator.Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))
Zero-Ireation: Die rekursive Funktion untersucht alle Pfade im verschachtelten Objekt gleichzeitig, was die Leistung für große Objekte beeinflussen kann.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3