Im Folgenden erstelle ich zwei Schleifen.Schleife, die sehr langes Array zurückgibt, obwohl es 3 mal looping ist?
Im Grunde läuft es zuerst durch das Randomizer-Array, das 4 Werte enthält. Dies erzeugt dann zufällig eine Zahl zwischen 0 und 3 und wählt einen der Werte aus dem Randomizer-Array zu console.log zurück in zufälliger Reihenfolge (For Beispiel 2,0,3,1).
Die nächste Schleife arbeitet nach dem Zufallsprinzip falsche Antworten zu erstellen. Wenn diese falsche Antwort im Array allAnswers nicht vorhanden ist, wird sie an das Array gesendet.
Dies dann Schleifen und erstellt eine Schaltfläche, die die Benutzer Antworten sein werden, die sie wählen können.
All dies funktioniert perfekt. Außer, dass mein Array allAnswers 13 Werte zurückgibt, wenn es nur 4 haben sollte (1 davon ist mein vorherbestimmter Wert von 21).
Ich brauche es, um 4 Tasten zu erstellen, die jeweils durch eine Antwort mit der Array-Position zwischen 0-3 ziehen und diese eindeutigen Werte zurückgeben, ohne undefiniert zu sagen. Also bin ich mir nicht sicher, was ich in diesem Fall falsch mache?
var allAnswers = [21],
randomizer = [0, 1, 2, 3],
random = 0,
buttonArea = $("#answerOptions");
for (randomizer, r = randomizer.length; r--;) {
random = randomizer.splice(Math.floor(Math.random() * (r + 1)), 1)[0];
// console.log(random);
// Generates 3 random wrong answers
for(wa = 0 ; wa < 3; wa++) {
wrongAnswers = Math.floor((Math.random() * 100) + 1);
}
// Pushes wrong answers to array
if (allAnswers.indexOf(wrongAnswers) === -1) {
allAnswers.push(wrongAnswers);
}
console.log(random);
input = $('<div class="col-xs-6"><button class="btn btn-primary answerButton">'+ allAnswers[random] +'</button></div>');
input.appendTo(buttonArea);
}
console.log(allAnswers);
EDIT:
Added in neue Schleife, die
var goodAnswer = 21,
allAnswers = [],
wrongAnswer,
wa,
buttonArea = $("#answerOptions");
for(wa = 0; wa < 4; wa++) {
do {
wrongAnswer = Math.floor((Math.random() * 100) + 1);
} while(wrongAnswer == goodAnswer || allAnswers.indexOf(wrongAnswer) !== -1);
allAnswers.push(wrongAnswer);
input = $('<div class="col-xs-6"><button class="btn btn-primary answerButton">'+ allAnswers +'</button></div>');
input.appendTo(buttonArea);
}
allAnswers[Math.floor(Math.random() * 4)] = goodAnswer;
console.log(goodAnswer);
console.log(allAnswers);
console.log(wa);
dauert nicht lange, es dauert weniger als 5 ms -> https://jsfiddle.net/zsyuxph7/ –
auch, wenn Sie die 'console.log()' in der Mitte des Codes entfernen es dauert weniger als 2ms -> https://jsfiddle.net/zsyuxph7/1/ –
Ich sehe Fälle, in denen diese Schleife Werte von undefined obwohl zurückgibt? :) –