Bedenken Sie:
var myArray = ['January', 'February', 'March'];
Wie kann ich mit JavaScript einen Zufallswert aus diesem Array auswählen?
Bedenken Sie:
var myArray = ['January', 'February', 'March'];
Wie kann ich mit JavaScript einen Zufallswert aus diesem Array auswählen?
Wenn Sie bereits über Unterstrich o lodash in Ihrem Projekt enthalten sind, können Sie _.sample
.
// will return one item randomly from the array
_.sample(['January', 'February', 'March']);
Wenn Sie mehr als ein Element nach dem Zufallsprinzip erhalten müssen, können Sie dies als zweites Argument in Unterstrich übergeben:
// will return two items randomly from the array using underscore
_.sample(['January', 'February', 'March'], 2);
oder verwenden Sie die _.sampleSize
Methode in lodash:
// will return two items randomly from the array using lodash
_.sampleSize(['January', 'February', 'March'], 2);
Sie können in Erwägung ziehen, eine Funktion für den Array-Prototyp zu definieren, um eine Methode zu erstellen [].sample()
die ein zufälliges Element zurückgibt.
Um die Prototyp-Funktion zu definieren, fügen Sie zunächst diesen Ausschnitt in Ihren Code ein:
Array.prototype.sample = function(){
return this[Math.floor(Math.random()*this.length)];
}
Um später ein zufälliges Element aus dem Array zu entnehmen, rufen Sie einfach .sample()
:
[1,2,3,4].sample() //=> a random element
Ich gebe diese Codeschnipsel für die Öffentlichkeit frei, unter den Bedingungen der <a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noreferrer">CC0 1.0 Lizenz </a>.
~~
ist viel schneller als Math.Floor()
Wenn es also um die Leistungsoptimierung bei der Produktion von Ausgaben mit UI-Elementen geht, ~~
gewinnt das Spiel. MEHR INFO
var rand = myArray[~~(Math.random() * myArray.length)];
Wenn Sie aber wissen, dass das Array Millionen von Elementen haben wird, dann sollten Sie vielleicht noch einmal zwischen Bitwise Operator und Math.Floor()
, da sich bitweise Operatoren bei großen Zahlen seltsam verhalten. Siehe untenstehendes Beispiel, das mit der Ausgabe erklärt wird.
var number = Math.floor(14444323231.2); // => 14444323231
var number = 14444323231.2 | 0; // => 1559421343
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.