J'ai besoin de remplir un fichier json, maintenant j'ai quelque chose comme ça:
{"element":{"id":10,"quantity":1}}
Et je dois ajouter un autre "élément". Ma première étape consiste à mettre ce json dans un type d'objet à l'aide cart = JSON.parse
, maintenant je dois ajouter le nouvel élément. Je suppose que je dois utiliser cart.push
pour ajouter un autre élément, j'ai essayé ceci:
var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);
Mais j'ai eu l'erreur "L'objet n'a pas de méthode push" lorsque j'essaie de le faire element.push
, et je pense que je fais quelque chose de TRÈS mal parce que je ne dis "l'élément" nulle part.
Comment puis je faire ça?
Edit: désolé pour tout ce que j'avais BEAUCOUP de confusion dans ma tête.
Je pensais que je ne peux obtenir que le type d'objet lors de la prise de données JSON.parse
, mais j'obtiens d'abord ce que j'ai mis dans le JSON.
Mettre un tableau au lieu d'un objet a résolu mon problème, j'ai utilisé beaucoup de suggestions ici aussi, merci à tous!
la source
Réponses:
Votre élément n'est pas un tableau, mais votre panier doit être un tableau afin de prendre en charge de nombreux objets élément. Exemple de code:
Si vous souhaitez que cart soit un tableau d'objets dans le formulaire,
{ element: { id: 10, quantity: 1} }
procédez comme suit:JSON.stringify()
a été mentionné comme une préoccupation dans le commentaire:la source
Avec cette rangée
vous définissez
element
comme un simple objet. L'objet JavaScript natif n'a pas depush()
méthode. Pour ajouter de nouveaux éléments à un objet simple, utilisez cette syntaxe:D'un autre côté, vous pouvez définir
element
comme un tableau en utilisantEnsuite, vous pouvez ajouter des éléments à l'aide de
push()
.la source
element[ yourKey ] = yourValue;
est le meilleur moyen d'ajouter un élément à un objet.element[ yourkey ] = [ element{yourkey], yourNewValue ];
Si le panier doit être stocké en tant qu'objet et non en tableau (bien que je recommande de le stocker en tant que []), vous pouvez toujours modifier la structure pour utiliser l'ID comme clé:
Cela vous permet d'ajouter plusieurs articles au panier comme suit:
la source
Pour ajouter à un objet, utilisez
Object.assign
Production:
la source
element
, il n'aura donc que le dernier élément.Je lisais quelque chose en rapport avec cet essai si c'est utile.
1.Définissez une fonction push à l'intérieur d'un objet.
Maintenant, vous pouvez pousser des éléments comme un tableau
Cela produira cet objet
Notez que les éléments sont ajoutés avec des index et voyez également qu'il y a une nouvelle propriété de longueur ajoutée à l'objet. Cela sera utile pour trouver la longueur de l'objet aussi. Cela fonctionne en raison de la nature générique de la
push()
fonctionla source
vous devez écrire
var element = [];
en javascript
{}
est un objet vide et[]
est un tableau vide.la source
la source
ce code est travaillé.
la source
Essaye ça:
la source
Ajout de nouveaux éléments clé / paire dans l'objet d'origine:
obj nouvelle valeur:
la source
Si quelqu'un cherche à créer un JSON similaire, juste sans l'utiliser
cart
comme tableau, voici:J'ai un tableau d'objets
myArr
comme:et je vais essayer de créer un JSON avec la structure suivante:
vous pouvez simplement faire-
la source
cart[key]=value
fondamentalement une carte de valeurs clés. Faites un vote positif si la réponse vous a été utile. Merci!Pour ceux qui recherchent toujours une solution, je pense que les objets auraient dû être stockés dans un tableau comme ...
Ensuite, lorsque vous souhaitez utiliser un élément comme objet, vous pouvez le faire ...
Mettez une variable à "id_that_we_want" et donnez-lui l'id de l'élément que nous voulons de notre tableau. Un objet "elemnt" est retourné. Bien sûr, nous n'avons pas besoin de nous pour trouver l'objet. Nous pourrions utiliser n'importe quelle autre propriété pour faire la recherche.
la source
OU:
la source
push est une méthode de tableaux, donc pour l'objet, vous pouvez obtenir l'index du dernier élément, et vous pouvez probablement faire le même travail que push pour l'objet comme ci-dessous
puis ajouter un objet au nouvel index de l'élément
la source
si vous ne concevez pas pour faire une boucle avec JS, par exemple passez à PHP pour faire une boucle pour vous
ce concept peut aider un peu
la source
C'est une vieille question, de toute façon aujourd'hui la meilleure pratique est d'utiliser Object.defineProperty
la source