What is the method to shuffle a JavaScript array?

I have an array defined as follows:

let myArray = ["1", "2", "3", "4"];

What approach can I use to rearrange its items in a random order?

Try using the Fisher-Yates shuffle algorithm, it’s efficient and unbiased.

function shuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
}

let myArray = ["1", "2", "3", "4"];
shuffle(myArray);
console.log(myArray);

Certainly, shuffling elements in an array can be done in various ways in JavaScript. An alternative to the Fisher-Yates algorithm is using a functional programming approach with the sort method in combination with Math.random() for quick and simple shuffling:

let myArray = ["1", "2", "3", "4"];

myArray.sort(() => Math.random() - 0.5);

console.log(myArray);

Explanation

  • Functionality: The sort method sorts array elements according to a compare function. By supplying () => Math.random() - 0.5 as the compare function, the elements are shuffled because Math.random() generates a random decimal between 0 and 1. This alters the order of elements based on a positive or negative result.

  • Performance: While this method is quick to implement, it should be noted that it’s not as performance-optimized or unbiased as Fisher-Yates. The randomness can sometimes be non-uniform depending on the JavaScript engine’s implementation.

  • Use Cases: Suitable for applications where absolute randomness is not critical and computation time is minimal.

This method is handy for simple scenarios where you want a quick and easy solution without implementing more complex shuffling logic.