323 votes

Ajout d'éléments à un objet

Je dois remplir un fichier JSON, maintenant j'ai quelque chose comme ceci :

{"element":{"id":10,"quantity":1}}

Et j'ai besoin d'ajouter un autre "élément". Ma première étape consiste à mettre ce JSON dans un objet en utilisant cart = JSON.parse, maintenant j'ai besoin d'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 obtenu une erreur "Object has no method push" lorsque j'ai essayé de faire element.push, et je pense que je fais quelque chose DE TRÈS mal car je ne mentionne nulle part l'"élément".

Comment puis-je faire ça ?

Édition : désolé à tous, j'avais BEAUCOUP de confusion dans ma tête.

Je pensais que je ne pouvais obtenir que le type d'objet en prenant des données à partir de JSON.parse, mais j'obtiens ce que j'ai mis dans le JSON en premier lieu.

Remplacer un tableau par un objet a résolu mon problème, j'ai également utilisé de nombreuses suggestions trouvées ici, merci à tous !

11voto

Thakur Karthik Points 1051

J'étais en train de lire quelque chose en rapport avec cet essai si cela est utile.

1.Définissez une fonction push à l'intérieur d'un objet.

let obj={push:function push(element){ [].push.call(this,element)}};

À présent, vous pouvez ajouter des éléments comme dans un tableau

obj.push(1)
obj.push({a:1})
obj.push([1,2,3])

Cela produira cet objet

obj={
 0: 1
 1: {a: 1}
 2: (3) [1, 2, 3]
 length: 3
}

Remarquez que les éléments sont ajoutés avec des index et voyez également qu'une nouvelle propriété de longueur est 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 fonction push()

7voto

Cris Points 2561
panier.push({"element":{ id: id, quantité: quantité }});

6voto

shift66 Points 4964

Vous devriez écrire var element = [];
en javascript {} est un objet vide et [] est un tableau vide.

5voto

pashifika Points 79
fonction addValueInObject(object, key, value) {
    var res = {};
    var textObject = JSON.stringify(object);
    if (textObject === '{}') {
        res = JSON.parse('{"' + key + '":"' + value + '"}');
    } else {
        res = JSON.parse('{' + textObject.substring(1, textObject.length - 1) + ',"' + key + '":"' + value + '"}');
    }
    return res;
}

ce code a fonctionné.

3voto

user3910831 Points 49

Essayez ceci :

var data = [{field:"Data",type:"date"},  {field:"Numero",type:"number"}];

var columns = {};

var index = 0;

$.each(data, function() {

    columns[index] = {
        field : this.field,
        type : this.type
    };

    index++;
});

console.log(columns);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X