J'ai un événement on click qui change les valeurs de trois éléments que je veux combiner en un objet de type json:

function generateNumbers() {
  let a = Math.random()
  let b = Math.random()
  let c = Math.random()
  console.log({
    "numbers": [
      {"a": a, "b": b, "c": c}
    ]
  })
}
<button onclick="generateNumbers()">Three Numbers</button>

Plutôt que de remplacer a, b et c, je veux ajouter un autre objet {"a": a, "b": b, "c": c} à chaque clic. Est-ce possible?

Sortie désirée

{
  "numbers": [
    {
      "a": 0.795741457922079,
      "b": 0.07941685760724382,
      "c": 0.048012832026655516
    },
    {
      "a": 0.17600389141580575,
      "b": 0.4720288949307833,
      "c": 0.8079844242898715
    },
  ]
}
1
MayaGans 17 avril 2020 à 17:21

3 réponses

Meilleure réponse

Vous devez créer un objet initial qui contient la propriété numbers en tant que tableau où vous pouvez pousser l'objet nouvellement généré avec les propriétés a, b et c. En savoir plus sur .push() :

La méthode push() ajoute un ou plusieurs éléments à la fin d'un tableau et renvoie la nouvelle longueur du tableau.

Essayez comme suit:

const data = {
   numbers: []
};

function generateNumbers() {
  let a = Math.random()
  let b = Math.random()
  let c = Math.random()
  
  data.numbers.push({"a": a, "b": b, "c": c});
  
  console.log(data);
}
<button onclick="generateNumbers()">Three Numbers</button>

J'espère que ça aide!

1
norbitrial 17 avril 2020 à 14:24

Vous devez ajouter une variable pour les nombres en dehors de la fonction generateNumbers.

const state = { numbers: [] }

function generateNumbers() {
  let a = Math.random()
  let b = Math.random()
  let c = Math.random()
  
  state.numbers.push({ a, b, c })

  console.log(state)
}
<button onclick="generateNumbers()">Three Numbers</button>
0
twharmon 17 avril 2020 à 14:23

Vous devez définir votre objet en dehors de la fonction et pousser la nouvelle valeur définie de numbers à generateNumbers

const data = { numbers: [] }

function generateNumbers(){
  const val = Math.random;
  data.numbers.push({ a: val(), b: val(), c: val() )})
}

0
AhsanBilal 17 avril 2020 à 14:42