Let’s write a shuffle function to randomly reorder elements of the array. For this, we will:
0
and 1
currentIndex
element with generated random index
.function shuffleArray(array) {let len = array.length,currentIndex;for (currentIndex = len - 1; currentIndex > 0; currentIndex--) {let randIndex = Math.floor(Math.random() * (currentIndex + 1) );var temp = array[currentIndex];array[currentIndex] = array[randIndex];array[randIndex] = temp;}}let a = [1,2,3,4,5];console.log("Array before Shuffling", a);console.log("Shuffling array");shuffleArray(a);console.log("Array after Shuffling", a);
In the code above we generate a random index using Math.random() * (curentIndex + 1)
. This will give a random index between 0(included)
and currentIndex+1(excluded)
. In our case, if the currentIndex = 4
, upon executing Math.random() * (curentIndex + 1)
, we will get a random number between 0(included) - 5(excluded)
(i.e., any one from this number 0,1,2,3,4).
The code above will shuffle the elements in the original array. If you don’t want to shuffle the original array, make a clone of the original array and pass the cloned array to the shuffle function.
You can clone an array using
array.slice(0)
.
function shuffleArray(array) {let len = array.length,currentIndex;for (currentIndex = len - 1; currentIndex > 0; currentIndex--) {let randIndex = Math.floor(Math.random() * (currentIndex + 1) );var temp = array[currentIndex];array[currentIndex] = array[randIndex];array[randIndex] = temp;}}let a = [1,2,3,4,5];// clone using slice methodlet clonedArray = a.slice(0);console.log("cloned array before shufflling " ,clonedArray);shuffleArray(clonedArray);console.log("cloned array after shufflling " ,clonedArray);console.log("source array after shuffling" ,a);