Ich möchte eine Funktion ausführen, die jedes Mal zufällig ein Element aus einem Array auswählt, das zuvor nicht ausgewählt wurde. Und wenn alle Elemente ausgewählt wurden, möchte ich die verwendeten Elemente zurücksetzen und von vorne beginnen.
Hoffe das macht Sinn.
Ich habe bereits eine Funktion, die ein zufälliges Element aus einem Array auswählt. Aber ich möchte auch nicht, dass Elemente ausgewählt werden, die zuvor ausgewählt wurden, es sei denn, alle Elemente wurden bereits ausgewählt.
Folgendes habe ich bisher bekommen (Danke an @Kelly):
var item = items[Math.floor(Math.random() * items.length)]
Sie können so etwas versuchen:
data
und lege es hineinchosenItems
data
erreicht ist 0
, stellen Sie chosenItems
oder originalArray
als Daten ein und wiederholen Sie den Vorgang.Vorteil dieser Vorgehensweise wäre,
function randomize(arr) {
let data = [...arr];
let chosenItems = [];
function getRandomValue() {
if (data.length === 0) {
data = chosenItems;
chosenItems = [];
}
const index = Math.floor(Math.random() * data.length);
const choice = data.splice(index, 1)[0];
chosenItems.push(choice);
return choice;
}
return {
randomItem: getRandomValue
}
}
const dummyData = [ 1,2,3,4,5 ];
const randomizeData = randomize(dummyData);
for (let i = 0; i< 10; i++) {
console.log(randomizeData.randomItem())
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen