Mein Code:
var a = "1",
b = "hello",
c = { "100" : "some important data" },
d = {};
d[a]["greeting"] = b;
d[a]["data"] = c;
console.debug (d);
Ich erhalte folgende Fehlermeldung:
Nicht erfasster TypeError: Die Eigenschaft 'Begrüßung' von undefined kann nicht festgelegt werden.
Ich versuche, etwas Ähnliches wie ein assoziatives Array zu tun. Warum funktioniert das nicht?
javascript
StackOverflowNewbie
quelle
quelle
Antworten:
du hast nie gesetzt
d[a]
einen Wert festgelegt.Aus diesem Grund wird
d[a]
ausgewertetundefined
und Sie können keine Eigenschaften festlegenundefined
.Wenn Sie
d[a] = {}
direkt nach dem Hinzufügen hinzufügen,d = {}
sollten die Dinge wie erwartet funktionieren.Alternativ können Sie einen Objektinitialisierer verwenden:
Oder Sie können alle Eigenschaften
d
einer anonymen Funktionsinstanz festlegen :Wenn Sie sich in einer Umgebung befinden, die ES2015-Funktionen unterstützt, können Sie berechnete Eigenschaftsnamen verwenden :
quelle
Sie müssen
d[a]
entweder ein assoziatives Array oder ein Objekt festlegen :d[a] = [];
d[a] = {};
Ohne Einstellung passiert Folgendes:
d[a] == undefined
, So Sie tun ,undefined['greeting']=b;
und per Definition hat undefiniert keine Eigenschaften. Somit ist der Fehler, den Sie erhalten haben.quelle
array
oderobject
. JS verfügt nicht über assoziative Arrays,Object
kann sich jedoch für begrenzte Zwecke wie eines verhalten.Das unter gespeicherte Objekt
d[a]
wurde auf nichts gesetzt. Somitd[a]
ergibt sich zuundefined
. Sie könnenundefined
:) keine Eigenschaft zuweisen . Sie müssen ein Objekt oder Array zuweisend[a]
:quelle
d[a] = {};
- Die Verwendung von Arrays mit nicht numerischen Tasten führt später zu Problemen.In Javascript ist fast alles ein Objekt
null
undundefined
eine Ausnahme.Instanzen von
Array
ist ein Objekt. Sie können also die Eigenschaft eines Arrays festlegen. Aus demselben Grund können Sie die Eigenschaft eines undefinierten Arrays nicht festlegen, da es sich NICHT um ein Objekt handeltquelle
Ich würde nur eine einfache Überprüfung durchführen, um festzustellen, ob d [a] existiert, und wenn nicht, es initialisieren ...
quelle