lePureStyle | Merci pour ton aide ! En me renseignant à partir de ton code j'ai pu trouver en farfouillant le net une solution à base de mélange de Fisher-Yates.
Donc grosso modo on a une fonction qui mélange le tableau, puis une seconde qui découpe en plusieurs parties.
Je ne sais pas si on peut optimiser le code en fusionnant les 2 fonctions en une seule...
voici ce que ça donne :
Code :
- let guests = ['pierre', 'paul', 'jacques', 'michel', 'henri', 'louis', 'monique', 'céline', 'gérard', 'annick', 'rose', 'héloise', 'carmen' , 'jeff', 'sandrine', 'marie', 'ines', 'milton', 'david', 'chris'];
- function shuffle(array) {
- let m = array.length, t, i;
- // While there remain elements to shuffle…
- while (m) {
- // Pick a remaining element…
- i = Math.floor(Math.random() * m--);
- // And swap it with the current element.
- t = array[m];
- array[m] = array[i];
- array[i] = t;
- }
-
- return array;
- }
- function spliceIntoChunks(arr, chunkSize) {
- const res = [];
- while (arr.length > 0) {
- const chunk = arr.splice(0, chunkSize);
- res.push(chunk);
- }
- return res;
- }
- console.log(spliceIntoChunks(shuffle(guests), 5));
|
Message édité par lePureStyle le 26-11-2021 à 16:33:22
|