2016-06-06 15 views
1

Ich muss meinem Javascript-Objekt, obj, einen neuen Schlüssel hinzufügen. Die Verwendung der folgenden Methode funktioniert gut, solange ich einen Wert für den Schlüssel habe.Wie kann ich einem JavaScript-Objekt ein Schlüssel/Wert-Paar hinzufügen, wenn der Wert leer ist?

Die folgende Methode fügt die tatsächlichen Zeichen "" in die Wertposition ein. Ich möchte den neuen Eintrag "key3" hinzufügen, aber ich möchte, dass er jetzt in obj als "key3" erscheint: {}.

Hier ist mein Code:

//1.adding key/value pair 
 
    var obj ={ 
 
     "key1":{}, 
 
     "key2":{} 
 
    }; 
 
    obj["key3"] = "test"; 
 

 
    //obj now looks like: 
 
    obj ={ 
 
     "key1":{}, 
 
     "key2":{}, 
 
     "key3": test 
 
    }; 
 

 
    //2.adding key/value pair with empty value 
 
    var obj ={ 
 
     "key1":{}, 
 
     "key2":{} 
 
    }; 
 
    obj["key3"] = ""; 
 

 
    //obj now looks like: 
 
    obj ={ 
 
     "key1":{}, 
 
     "key2":{}, 
 
     "key3": "" 
 
    }; 
 

 
    //but I want obj to look like: 
 
    var obj ={ 
 
     "key1":{}, 
 
     "key2":{}, 
 
     "key3":{} 
 
    };

+7

Warum nicht nur wörtlich ein leeres Objekt zuweisen '{}' statt einer leeren Zeichenfolge ? – Schleis

+1

Ich finde es schwierig, Ihr Problem zu verstehen, aber Sie können ein leeres Objekt a la 'obj [" key3 "] = {};' zuweisen. Um einen Schlüssel hinzuzufügen, müssen Sie einen Wert haben. Auch wenn dieser Wert nicht definiert ist. 'obj [" key3 "] = undefiniert;'. – user2867288

Antwort

4

ein Objekt zuweisen anstelle einer Zeichenfolge.

var obj ={ 
    "key1":{}, 
    "key2":{} 
}; 



obj["key3"] = {}; 



////////////////////////////////////////////////////////////// 
New Object: 

var obj ={ 
    "key1":{}, 
    "key2":{}, 
    "key3":{} 
}; 
1

Ein funktioneller, nicht-mutative Ansatz mit ES6 könnte wie folgt aussehen:

const initialObject = { 
    key1:{}, 
    key2:{} 
}; 

const keysToAdd = { 
    key3: {} 
}; 

const updatedObject = Object.assign({}, initialObject, keysToAdd); 

console.log(updatedObject); 

JS Bin Example

Verwandte Themen