• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie weise ich einem Objekt innerhalb eines Objekt nur Teile eines anderen Objekts zu?

Tabula_Rasa

Mitglied
Ich habe folgendes Objekt:
Javascript:
let sublistObject = {sublist1: {isOpen: false, selectedItem: "itemName"},
                     sublist2: {isOpen: true, selectedItem: "itemName"}}

Nun möchte ich folgende Werte dieses Objekts dem obigen Objekt zuweisen:
Javascript:
let isSublistOpenObject = {sublist1: {isOpen: true}, sublist2: {isOpen: false}}

sodass sublistObject mit den neuen Bool-Werten aktualisiert, ohne dass dabei der Key selecteditem sich ändert:

Javascript:
let sublistObject = {sublist1: {isOpen: true, selectedItem: "itemName"},
                     sublist2: {isOpen: false, selectedItem: "itemName"}}
 

Tabula_Rasa

Mitglied
Ich habe folgendes Objekt:
Javascript:
let sublistObject = {sublist1: {isOpen: false, selectedItem: "itemName"},
                     sublist2: {isOpen: true, selectedItem: "itemName"}}

Nun möchte ich folgende Werte dieses Objekts dem obigen Objekt zuweisen:
Javascript:
let isSublistOpenObject = {sublist1: {isOpen: true}, sublist2: {isOpen: false}}

sodass sublistObject mit den neuen Bool-Werten aktualisiert wird, ohne dass dabei der Key selecteditem sich ändert:

Javascript:
let sublistObject = {sublist1: {isOpen: true, selectedItem: "itemName"},
                     sublist2: {isOpen: false, selectedItem: "itemName"}}
Ich habe da einen Ansatz mit verschachtelten for-loops aber würde gerne wissen, ob es leichter geht.
 

Sempervivum

Senior HTML'ler
Ich denke nicht, dass man da verschachtelte Schleifen braucht, ich schlage diese Lösung vor:
Code:
        let sublistObject = {
            sublist1: { isOpen: false, selectedItem: "itemName" },
            sublist2: { isOpen: true, selectedItem: "itemName" }
        };
        let isSublistOpenObject = { sublist1: { isOpen: true }, sublist2: { isOpen: false } };
        // Schleife über isSublistOpenObject:
        for (key in isSublistOpenObject) {
            // in "key" steht jetzt der Schlüssel, der für beide Objekte gültig ist
            // damit können wir in sublistObject "isOpen" aktualisieren
            sublistObject[key].isOpen = isSublistOpenObject[key].isOpen;
        }
        console.log(sublistObject);
 

Tabula_Rasa

Mitglied
Ich denke nicht, dass man da verschachtelte Schleifen braucht, ich schlage diese Lösung vor:
Code:
        let sublistObject = {
            sublist1: { isOpen: false, selectedItem: "itemName" },
            sublist2: { isOpen: true, selectedItem: "itemName" }
        };
        let isSublistOpenObject = { sublist1: { isOpen: true }, sublist2: { isOpen: false } };
        // Schleife über isSublistOpenObject:
        for (key in isSublistOpenObject) {
            // in "key" steht jetzt der Schlüssel, der für beide Objekte gültig ist
            // damit können wir in sublistObject "isOpen" aktualisieren
            sublistObject[key].isOpen = isSublistOpenObject[key].isOpen;
        }
        console.log(sublistObject);
Ja, im Nachhinein ist mir das auch aufgefallen. Habe aber eher an einen spread-Operator wie er für Arrays existiert gedacht aber es gibt leider anscheinend keinen Spread-Operator für Objekte.
 
Werbung:
Oben