Перемешиваем массив
Как перемешать элементы массива с помощью JavaScript
Сегодня мы разберем, как с помощью JavaScript перемешать элементы в массиве.
Если коротко, делается это так:
let list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
list = list.sort(() => Math.random() - 0.5);
А теперь рассмотрим пример, приведенный выше, более подробно.
Итак, нам нужно случайным образом перемешать элементы массива. Иными словами, у нас есть необходимость изменить порядок следования элементов в уже существующем массиве.
Исходный массив может быть таким:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Полученный результат должен меняться при каждом перемешивании. Например, так:
[4, 8, 2, 9, 1, 3, 6, 5, 7]
[5, 1, 2, 3, 7, 4, 9, 6, 8]
[3, 1, 4, 7, 8, 6, 2, 9, 5]
Для начала создадим массив list
:
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
Теперь применим к исходному массиву встроенный метод sort()
, аргументом которого будет функция, возвращающая случайное значение между -0.5 и 0.5:
list.sort(() => Math.random() - 0.5);
Функция-аргумент применяется к каждому элементу массива. В функцию можно передавать и 2 элемента массива, например, так:
list.sort((a, b) => Math.random() - 0.5);
Но в нашем примере такой подход не используется. Если результат выполнения функции меньше 0, элемент a
получает индекс со значением меньше, чем у элемента b
. Если результат больше 0, a
получает индекс с большим значением.
Вызов метода sort()
не приводит к изменению исходного массива. Поэтому полученный результат можно поместить в новый массив:
const shuffled = list.sort(() => Math.random() - 0.5);
Или переписать исходный массив, если изначально создать его, как переменную:
let list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
list = list.sort(() => Math.random() - 0.5);
Спасибо за внимание.