7
votes

Affectation de valeurs aux objets JSON en JavaScript

C'est ce que j'essaie de construire via JavaScript dans la notation de points ou []: xxx

maintenant si "item1" est le nom de la variable itemName .

Ceci fonctionne:

var shoppingcart = {};
shoppingcart [itemName] = itemName;
alerte (shoppingcart.item1);

qui retourne item1

mais cela ne fonctionne pas:
1 var shoppingcart = {};
2 ShoppingCart [itemName] ['Description'] = 'Ceci est l'article 1';

JS vient de mourir à la ligne 2, pourquoi? et comment puis-je attribuer la valeur de description à la "description"?

Je le ferais comme ceci: xxx

... mais ça fait la clé littéralement itemName au lieu de item1 .


0 commentaires

4 Réponses :


12
votes

shoppingcart [itemName] n'existe pas.
Vous devez la créer d'abord: xxx

ou, mieux encore: xxx


2 commentaires

Aussi ShoppingCart [itemName] ['Description'] est équivalent à ShoppingCart [itemName] .description . Vous n'avez besoin que d'accéder aux propriétés avec [] lorsque vous y accédez dynamiquement obj [projectstring] ou lorsqu'il contient des caractères illégaux pour DOT NOTONN OBJ [' Nom ']


Oui Thnx, c'est ce que j'ai lu partout, mais la clé est que shopping.cart [itemName] = {}; Je comprends des objets de plus en plus chaque jour!



1
votes

Cela ne fonctionne pas car, dans votre deuxième exemple, vous essayez d'indexer un objet vierge avec une clé qui n'a pas été définie. Ce qui suit fonctionnera ...

var shoppingCart = {};
shoppingCart[itemName] = {};
shoppingCart[itemName]['description'] = '...';


0 commentaires

2
votes

dans les objets JavaScript ne crée pas automatiquement l'accès des membres; Vous devez d'abord créer l'objet:

shoppingCart[itemname] = { "description": description,
                           "price": price,
                           "quantity": quantity,
                           "shipping": shipping,
                           "total": total };


0 commentaires

0
votes

juste juste fyi, solution alternative: xxx

ou juste xxx


0 commentaires