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); });
4 Réponses :
Est-ce ce dont vous avez besoin? Il bouffle des couleurs et les choisit par l'indice actuel de foresach.
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]); });
Légende. Merci beaucoup!
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>
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 échantillon code de travail: p> p> 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
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);
});
Si je comprends bien, vous voulez obtenir une valeur aléatoire qui n'a pas encore été utilisée pour ce
foreach code>
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.