Heim >Web-Frontend >js-Tutorial >Wie extrahiere ich bestimmte Eigenschaften effizient aus einem Objekt in ES6?

Wie extrahiere ich bestimmte Eigenschaften effizient aus einem Objekt in ES6?

Linda Hamilton
Linda HamiltonOriginal
2024-12-21 18:29:10197Durchsuche

How to Efficiently Extract Specific Properties from an Object in ES6?

Einzeiler zum Übernehmen einiger Eigenschaften von Objekten in ES6

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!

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