Gibt es eine Möglichkeit, einen numerischen Typ als Objektschlüssel zu verwenden?
Scheint es, dass wenn ich mit einem numerischen Datentyp als Schlüssel-Namen in ein Objekt, es wird immer in einen string umgewandelt. Gibt es trotzdem, um es zu speichern als eine numerische? Die normale Typisierung nicht zu funktionieren scheint.
Beispiel:
var userId = 1;
console.log( typeof userId ); //number
myObject[userId] = 'a value';
console.dir(myObject);
Ausgabe Dir:
{
'1': 'a value'
}
Was ich wollen ist diese:
{
1: 'a value'
}
Rat?
Dank
InformationsquelleAutor der Frage Spot | 2010-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, das ist nicht möglich. Die Schlüssel werden immer in einen string umgewandelt. Sehen Property-Accessor-docs
InformationsquelleAutor der Antwort Matthew Flaschen
In ein Objekt, Nein, aber ich habe festgestellt, Anzeigen äußerst nützlich für diese Anwendung. Hier ist, wo ich habe es verwendet für numerische Schlüssel, ein Schlüssel-Ereignis.
InformationsquelleAutor der Antwort corvid
Scheint von design in ECMA-262-5:
Aber ich sehe nicht, eine definitive Spezifikation für die es in der ECMA-262-3.
Unabhängig davon, würde ich nicht versuchen mit nicht-strings als Namen für die Eigenschaft.
InformationsquelleAutor der Antwort Rob Olmos
Ich denke, man kann Folgendes tun, wenn Sie wollen, um die oben genannten Ding für den Zugriff auf es wie als eine Nummer, die ich Tat das gleiche und gearbeitet.
Funktioniert nur, wenn der Schlüssel nicht starten mit und numerischen Zeichen, ansonsten werde es in eine Zahl umgewandelt werden. Siehe dazu das folgende Beispiel:
Ich verwendet jQuery hier
Aktualisiert:
Kann es zu überwinden Sie das oben genannte problem. Sie schlagen besser, wenn verfügbar und das problem mit dieser Antwort, wenn Sie es sind.
InformationsquelleAutor der Antwort Shivam Sharma
In JavaScript, numerische strings und zahlen sind austauschbar, so
Wenn Sie wirklich wollen, die Anzahl der Schlüssel zu sein für ein Objekt, möchten Sie vielleicht ein array (d.h. erstellt mit
new Array()
oder[]
).InformationsquelleAutor der Antwort William Niu