0
votes

Appeler une valeur aléatoire unique dans une boucle .Foreseach ()

J'ai une fonction qui choisit une couleur aléatoire à partir d'un tableau de couleurs.

traitInfo.forEach((t) => {
    const trait = {
      id: t.id,
      label: t.label,
      lineTension: 0.1,
      fill: false,
      backgroundColor: dynamicColors(),
      borderCapStyle: 'square',
      borderJoinStyle: 'miter',
      pointHoverRadius: 8,
      pointRadius: 4,
      pointHitRadius: 10,
      data: [],
    };
    traitDatasets.push(trait);
  });


2 commentaires

Si je comprends bien, vous voulez obtenir une valeur aléatoire qui n'a pas encore été utilisée pour ce foreach


Vous pouvez immerger le tableau d'abord si vous souhaitez que les couleurs différentes chaque fois que le graphique soit dessiné, puis choisissez de la matrice en séquence au lieu de aléatoirement.


4 Réponses :


1
votes

Est-ce ce dont vous avez besoin? Il bouffle des couleurs et les choisit par l'indice actuel de foresach. XXX


0 commentaires

1
votes

const randomly = () => Math.random() - 0.5;
const colors = ['#FFC100','#FF7400','#FF0000','#4BBDAD','#0C1938','#848483'];

const traitInfo = Array(6).fill({}); // for the snippet.
const dynamicColors = [].concat(colors).sort(randomly);

traitInfo.forEach((t, i) => {
  console.info(dynamicColors[i]);
});


1 commentaires

Légende. Merci beaucoup!



0
votes

Utilisation d'une fermeture Pour vous assurer que je ne touche pas le tableau d'origine

p>

<div id="p1">1</div>
<div id="p2">2</div>
<div id="p3">3</div>
<div id="p4">4</div>
<div id="p5">5</div>
<div id="p6">6</div>
<button id="button">colorize</button>


0 commentaires

0
votes

au lieu de shuffling, vous pouvez utiliser un générateur de fonction pour obtenir l'élément aléatoire des éléments restants, en s'appuyant sur son élément suivant code> jusqu'à ce que effectué code> (la pièce vérifie si c'est Terminé CODE> n'est pas inclus), en supposant que vous voulez une valeur unique pour chaque élément de tableau strong>.

échantillon code de travail: p>

p>

traitInfo.forEach((t) => {
    const trait = {
      id: t.id,
      label: t.label,
      lineTension: 0.1,
      fill: false,
      backgroundColor: cPicker.next().value, // <-- change here
      borderCapStyle: 'square',
      borderJoinStyle: 'miter',
      pointHoverRadius: 8,
      pointRadius: 4,
      pointHitRadius: 10,
      data: [],
    };
    traitDatasets.push(trait);
  });


0 commentaires