Posso ottenere un nome di proprietà dell’object javascript che inizia con un numero?

var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]}; alert(myObj.suppliers[0].12m); 

C’è un modo diverso per ottenere questa proprietà, o dovrei semplicemente non usare una chiave che inizia con un numero?

Puoi usare la seguente syntax per fare ciò che descrivi usando la notazione delle parentesi :

 myObject["myProperty"] 

La notazione del myObject.myProperty differisce dalla notazione dei punti (ad es. myObject.myProperty ) in quanto può essere utilizzata per accedere a proprietà il cui nome è illegale. Illegale significa che con la notazione a punti, si è limitati a utilizzare nomi di proprietà alfanumerici (più il carattere di sottolineatura _ e il simbolo del dollaro $ ), e non iniziare con un numero. La notazione del bracketing ci consente di utilizzare una stringa per accedere a una proprietà e ignorarla.

 myObject.1 // fails, properties cannot begin with numbers myObject.& // fails, properties must be alphanumeric (or $ or _) myObject["1"] // succeeds myObject["&"] // succeeds 

Ciò significa anche che possiamo usare variabili stringa per cercare e impostare proprietà sugli oggetti:

 var myEdgyPropertyName = "||~~(_o__o_)~~||"; myEdgyObject[myEdgyPropertyName] = "who's there?"; myEdgyObject[myEdgyPropertyName] // "who's there?"; 

Puoi leggere ulteriori informazioni sulla notazione di punti e parentesi qui, su MDN .

Sì, usa la syntax della parentesi:

alert(myObj.suppliers[0]["12m"]);

Da MDN

Un identificatore JavaScript deve iniziare con una lettera, un carattere di sottolineatura (_) o un segno di dollaro ($); i caratteri successivi possono anche essere cifre (0-9). Poiché JavaScript fa distinzione tra maiuscole e minuscole, le lettere includono i caratteri da “A” a “Z” (maiuscolo) ei caratteri da “a” a “z” (lettere minuscole).