Added a shuffle function for arrays
authorAlexander Ebert <ebert@woltlab.com>
Sun, 16 Feb 2014 22:48:20 +0000 (23:48 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Sun, 16 Feb 2014 22:48:20 +0000 (23:48 +0100)
wcfsetup/install/files/js/WCF.js

index 7eae22e64a6257b54773bcb44c7a16e8cbe4813d..3cc1c9672c9b182e8fd68d61d709c88537d7d444 100755 (executable)
@@ -121,6 +121,29 @@ String.prototype.hashCode = function() {
        return $hash;
 };
 
+/**
+ * Adds a Fisher-Yates shuffle algorithm for arrays.
+ * 
+ * @see        http://stackoverflow.com/a/2450976
+ */
+function shuffle(array) {
+       var currentIndex = array.length, temporaryValue, randomIndex;
+       
+       // While there remain elements to shuffle...
+       while (0 !== currentIndex) {
+               // Pick a remaining element...
+               randomIndex = Math.floor(Math.random() * currentIndex);
+               currentIndex -= 1;
+               
+               // And swap it with the current element.
+               temporaryValue = array[currentIndex];
+               array[currentIndex] = array[randomIndex];
+               array[randomIndex] = temporaryValue;
+       }
+       
+       return this;
+};
+
 /**
  * User-Agent based browser detection and touch detection.
  */