Mon approche sur cela est de créer une méthode getRandomIndexes
que vous pouvez utiliser pour créer un tableau des indexes que vous allez extraire du tableau principal. Dans ce cas, j'ai ajouté une logique simple pour éviter le même index dans l'échantillon. voici comment ça fonctionne
const getRandomIndexes = (longueur, taille) => {
const indexes = [];
const créés = {};
while (indexes.length < taille) {
const aléatoire = Math.floor(Math.random() * longueur);
if (!créés[aléatoire]) {
indexes.push(aléatoire);
créés[aléatoire] = true;
}
}
return indexes;
};
Cette fonction, indépendamment de ce que vous avez, va vous donner un tableau d'indexes que vous pouvez utiliser pour extraire les valeurs de votre tableau de longueur longueur
, donc pourrait être échantillonné par
const monTableau = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
getRandomIndexes(monTableau.length, 3).map(i => monTableau[i])
Chaque fois que vous appelez la méthode, vous obtiendrez un échantillon différent de monTableau
. à ce stade, cette solution est cool mais pourrait être encore meilleure pour échantillonner des tailles différentes. si vous voulez le faire, vous pouvez utiliser
getRandomIndexes(monTableau.length, Math.ceil(Math.random() * 6)).map(i => monTableau[i])
vous donnera une taille d'échantillon différente de 1 à 6 à chaque fois que vous l'appellerez.
J'espère que cela vous a aidé :D