Wenn es ein Array wie dieses gibt:
var arr1 = ["a", "b", "c", "d"];
Wie man die Reihenfolge des Arrays zufällig stört, das heißt es.
Es gibt einen einfachen zufälligen Algorithmus, der weit verbreitet ist:
Funktion randomsort (a, b) {return (0,5 - math.random ()); }Tatsächlich ist bewiesen, dass das oben genannte nicht völlig zufällig ist.
Ich habe gerade nach zu vielen solchen Dingen im Internet gesucht. Werfen wir einen Blick auf eine hohe Punktzahl auf Stackoverflow. Die Antwort kommt von Github.
Knuth-Shuffle
Die Fisher-Yates (auch bekannt als Knuth) mischen nach Browser und Node.js
Schauen wir uns den oben genannten Algorithmus an. Der Code ist wie folgt:
/ *JSHINT -W054 */(function (exports) {'strict'; // http://stackoverflow.com/questions/2450954/How-to-randomize-shuffle-a-a-javascript-arrayfunction Shuffle (Array) {var CurrentSex = Array. ! = shuffle;} ('undefined'!Der Autor empfiehlt die Verwendung einer Browser -Schreibmethode:
(function () {'Strict'; var a = [2,11,37,42], b; // Der Shuffle ändert das ursprüngliche Array // A.Slice (0) erstellt eine Kopie, die BB = Fenster zugewiesen ist. KnuthShuffle (a.slice (0)); console.log (b);} ();Nodejs:
NPM Install-Knuth-Shuffle (function () {'strict'; var shuffle = Request ('Knuth-Shuffle'). KnuthShuffle, a = [2,11,37,42], B; // Der Shuffle ändert das ursprüngliche Array // A.Slice (0) Erstellt eine Kopie, die BB = BB = zugewiesen wird. shuffle (a.slice (0)); Konsole.log (b);} ());Es gibt andere, die von diesem Algorithmus deformiert sind, wie z. B. die folgende für die Schleife. Ich werde über nichts anderes sprechen.
/*** Randomize Array-Elementorder in Platzierung. temp;} return Array;}
Mit ES2015 (ES6)
Array.Prototype.shuffle = function () {let m = this.Length, i; while (m) {i = (math.random () * m-) >>> 0;verwenden:
[1, 2, 3, 4, 5, 6, 7] .Shuffle ();
Ich fand viele zufällige Algorithmen für die chinesische Suche, aber ob es noch zufällig ist, ist noch erforderlich, und Effizienz und Kompatibilität müssen noch untersucht werden. Es wird empfohlen, dass Sie die oben genannten verwenden können, wenn Sie nach zufällig störende Array -Elemente verwenden müssen.