Problem:
Das Ziel besteht darin, eine prägnante Darstellung zu erstellen Funktion in ES6, die bestimmte Eigenschaften aus einem Objekt extrahiert. Es wird eine Lösung mit Destrukturierung und vereinfachten Objektliteralen vorgestellt, es bestehen jedoch Bedenken hinsichtlich der Wiederholung von Feldlisten.
Antwort:
Um eine schlankere Lösung zu erreichen, sollten Sie die Verwendung von Parametern in Betracht ziehen Destrukturierung, um die Notwendigkeit eines expliziten Parameters zu beseitigen:
({id, title}) => ({id, title})
Die Parameterdestrukturierung ist zwar praktisch, erfordert jedoch dennoch die Wiederholung der Eigenschaft Liste. Für eine allgemeinere Lösung verwenden Sie Folgendes:
function pick(o, ...props) { return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]}))); }
Diese Lösung verwendet Object.assign, um Objekte zusammenzuführen und dabei bestimmte Eigenschaften (Requisiten) beizubehalten.
Zusätzliche Überlegungen für Eigenschaftsattribute :
Wenn es wichtig ist, die Attribute der ursprünglichen Eigenschaften beizubehalten (wie Konfigurierbarkeit und Getter/Setter) und Um nicht aufzählbare Eigenschaften auszuschließen, beachten Sie Folgendes:
function pick(o, ...props) { var has = p => o.propertyIsEnumerable(p), get = p => Object.getOwnPropertyDescriptor(o, p); return Object.defineProperties({}, Object.assign({}, ...props .filter(prop => has(prop)) .map(prop => ({prop: get(props)}))) ); }
Das obige ist der detaillierte Inhalt vonWie extrahiere ich bestimmte Eigenschaften effizient aus einem Objekt in ES6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!