var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]}; alert(myObj.suppliers[0].12m);
Existe-t-il un moyen différent d'obtenir cette propriété, ou dois-je simplement ne pas utiliser une clé qui commence par un nombre?
Vous pouvez utiliser la syntaxe suivante pour faire ce que vous décrivez en utilisant la notation de bracket :
myObject["myProperty"]
La notation de support diffère de la notation de points (par exemple myObject.myProperty
) en ce sens qu'elle peut être utilisée pour accéder à des propriétés dont les noms sont illégaux. Signification illégale qu'avec une notation par points, vous êtes limité à utiliser des noms de propriétés alphanumériques (plus le souligné _
et le signe dollar $
), et ne commencez pas par un nombre. La notation de support nous permet d'utiliser une chaîne pour accéder à une propriété et contourner ceci.
myObject.1 // fails, properties cannot begin with numbers myObject.& // fails, properties must be alphanumeric (or $ or _) myObject["1"] // succeeds myObject["&"] // succeeds
Cela signifie également que nous pouvons utiliser des variables de chaîne pour rechercher et définir des propriétés sur les objets:
var myEdgyPropertyName = "||~~(_o__o_)~~||"; myEdgyObject[myEdgyPropertyName] = "who's there?"; myEdgyObject[myEdgyPropertyName] // "who's there?";
Vous pouvez en savoir plus sur la notation des points et des brackets ici, sur MDN .
Oui, utilisez la syntaxe du support:
alert(myObj.suppliers[0]["12m"]);
De MDN
Un identifiant JavaScript doit commencer par une lettre, un trait de soulignement (_) ou un signe dollar ($); Les caractères suivants peuvent aussi être des chiffres (0 à 9). Parce que JavaScript est sensible à la casse, les lettres comprennent les caractères "A" à "Z" (majuscule) et les caractères "a" à "z" (minuscules).