# How to shuffle elements of an array in JavaScript

Posted on Apr 06, 2022

Learn how to shuffle and change the position of a JavaScript array elements

A JavaScript array elements can be shuffled by using the `sort()` method.

Consider the code example below:

``````let numbers = [1, 2, 3, 4, 5, 6, 7, 8];

let shuffledNumbers = numbers.sort(function () {
return Math.random() - 0.5;
});

console.log(shuffledNumbers);
// [7, 8, 3, 1, 5, 4, 2, 6]
``````

The JavaScript Array `sort()` method is used to sort the elements of an array.

The method accepts a comparison function and performs a sort based on the value returned by that function.

The comparison function is executed on every element in your array. Usually, two elements of the array are passed as arguments to the function like this:

``````numbers.sort(function (a, b) {
return Math.random() - 0.5;
});
``````

But since you’re not using the elements in the function body, you can omit the arguments.

The rule of the `sort()` method is that when the comparison function returns `> 0` then the element `a` is put before `b`.

When the function returns a value `< 0` then `a` is put after `b`.

Consider the following examples:

``````// Example 1: a after b
let pair = [17, 99]; // a, b

console.log(pair.sort(() => -1));
// [99, 17] // b, a

// Example 2: a before b
let anotherPair = [27, 5]; // a, b

console.log(anotherPair.sort(() => 1));
// [27, 5] // a, b
``````

The `Math.random()` method returns a random number between `0` to `0.999`.

When you return `Math.random() - 0.5` from the `sort()` method, it means that the method will return a random number between `-0.5` and `0.499`.

This makes the `sort()` method perform the sort randomly, shuffling the elements in your array without any clear pattern.

And that’s how you can shuffle an array using JavaScript.

You can shorten the function into a one-liner using the arrow function syntax as follows:

``````let numbers = [1, 2, 3, 4, 5];
let shuffled = numbers.sort(() => Math.random() - 0.5);

console.log(shuffled);
// [1, 2, 5, 3, 4]
``````

The `sort()` method above randomly reorders the array every time you run the code.

You can also write a JavaScript function named `shuffle()` using the `sort()` method as follows:

``````function shuffle(array) {
return array.sort(() => Math.random() - 0.5);
}

let numbers = [1, 2, 3, 4, 5];
console.log(shuffle(numbers));
// [1, 2, 5, 3, 4]

let letters = ["a", "b", "c", "d", "e"];
console.log(shuffle(letters));
// ["c", "e", "b", "a", "d"]
``````

The `shuffle` function accepts an `array` as its argument and returns a shuffled array from the given `array`.

Please note that the `sort()` method modifies the original array.

If you want to keep the original array, then you need to use the spread operator (`...`) to create a shallow copy of the array.

You need to call the `sort()` method on the array copy:

``````function shuffle(array) {
return [...array].sort(() => Math.random() - 0.5);
}

let numbers = [1, 2, 3, 4, 5];
console.log(shuffle(numbers));
// [1, 2, 5, 3, 4]
console.log(numbers);
// [1, 2, 3, 4, 5]

let letters = ["a", "b", "c", "d", "e"];
console.log(shuffle(letters));
// ["c", "e", "b", "a", "d"]
console.log(letters);
// ["a", "b", "c", "d", "e"]
``````

You can learn more about the array `sort()` method here:

MDN sort() documentation

Feel free to use the code in this tutorial for your JavaScript application. 😉

### Level up your programming skills

I'm sending out an occasional email with the latest programming tutorials. Drop your email in the box below and I'll send new stuff straight into your inbox!

No spam. Unsubscribe anytime.