Comment créer dynamiquement un objet à l'intérieur d'un autre objet?

J'ai ce code:

var lista = [{
        "product": "Dipers",
        "quantity": 2
    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

Mais je dois ajouter de nouveaux objets pour que ça ressemble à ceci:

var lista = [{
        "product": "Dipers",
        "quantity": 2

        seller1 = {
        "name": "B&J",
        "adress": "that street"
        }
        seller2 = {
        "name": "B&J",
        "adress": "that street"
        }

    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

Comment ajouter dynamiquement seller1 et seller2 à l'objet existant lista?

0
Miguel Rodrigues 26 janv. 2019 à 16:03

5 réponses

Meilleure réponse

Attribuez simplement les nouvelles propriétés d'objet que vous avez écrites / récupérées à une nouvelle variable, puis utilisez simplement la notation par points pour récupérer les nouvelles propriétés et les affecter à votre objet.

Vérifiez et exécutez l'extrait de code suivant pour un exemple pratique de ce que j'ai décrit ci-dessus:

var lista = [{
        "product": "Dipers",
        "quantity": 2
    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

let newObj = {
  "seller1": {
    "name": "B&J",
    "adress": "that street"
  },
  "seller2": {
    "name": "B&J",
    "adress": "that street"
  }
}

lista[0].seller1 = newObj.seller1;
lista[0].seller2 = newObj.seller2;

console.log(lista);

N.B. Une propriété d'objet utilise les deux points : et non le signe égal =.

0
AndrewL64 26 janv. 2019 à 13:28

Comme il a été répondu ci-dessus par SomoKRoceS, vous pouvez faire votre script de cette façon:

var lista = [{
        "product": "Dipers",
        "quantity": 2,
        "sellers": []
    },
    {
        "product": "Beear",
        "quantity": 6,
        "sellers": []
    },
    {
        "product": "Bread",
        "quantity": 10,
        "sellers": []
    }
];

var seller1 = {
    "name": "B&J",
  "adress": "that street"
}

var seller2 = {
    "name": "Test",
  "adress": "that street"
}

lista[0].sellers.push(seller1);
lista[1].sellers.push(seller2);
lista[2].sellers.push(seller1);
lista[2].sellers.push(seller2);

console.log(lista);

https://jsfiddle.net/9ar58teo/

0
Marcelo Macedo 26 janv. 2019 à 13:24

Je recommanderais de stocker les vendeurs dans un tableau et d'utiliser ultérieurement push:

var lista = [{
        "product": "Dipers",
        "quantity": 2

        sellers:[{
        "name": "B&J",
        "adress": "that street"
        },
        {
        "name": "B&J",
        "adress": "that street"
        }]

    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

Ensuite, dans votre code, ajoutez dynamiquement un vendeur:

lista[desiredindex].sellers.push({name:"new",address:"new"});
0
SomoKRoceS 26 janv. 2019 à 13:55

Vous avez une erreur de syntaxe dans votre code, mais si je comprends bien, vous en avez besoin

 const seller1Name = “seller1”;
 const seller2Name = “seller2”;
 const lista = [{
    "product": "Dipers",
    "quantity": 2
   },
   {
    "product": "Beear",
    "quantity": 6
   },
   {
    "product": "Bread",
    "quantity": 10
   }
 ];
 lista[0][seller1Name] = {
   "name": "B&J",
   "adress": "that street"
 }

 lista[0][seller2Name] = {
     "name": "B&J",
     "adress": "that street"
 }
0
Gor Kotikyan 26 janv. 2019 à 13:14

Fait comme ça..

var lista = [{
        "product": "Dipers",
        "quantity": 2
    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];
///  try this


lista[0]['seller1']={
        "name": "B&J",
        "adress": "that street"
        };
lista[0]['seller2']={
        "name": "B&J",
        "adress": "that street"
        };
0
Dhamik jagodana 26 janv. 2019 à 13:18