dr.Brain

doctor Brain

мир глазами веб-разработчика

Перемешиваем массив

Как перемешать элементы массива с помощью JavaScript

dr.Brain

время чтения 2 мин.

Photo by Jack Hamilton on Unsplash

Сегодня мы разберем, как с помощью 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);

Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.