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

Краткий ответ:

let list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list = list.sort(() => Math.random() - 0.5)

Длинный ответ:

Мне нужно было перетасовать элементы в массиве JavaScript.

Другими словами, я хотел переделать элементы массива, чтобы они располагались в другом порядке, чем в предыдущем.

Начиная с такого массива:

[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, and the opposite if the result is > 0.

Вы можетепрочтите все подробности о Array.sort () здесь.

Звонокsort()в списке не изменяет исходное значение массива.

Теперь вы можете присвоить результат этой операции новой переменной, например:

const shuffled = list.sort(() => Math.random() - 0.5)

или вы также можете перезаписать существующий список, если вы объявите это какletПеременная:

let list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list = list.sort(() => Math.random() - 0.5)

Скачать мою бесплатнуюРуководство для начинающих по JavaScript


Больше руководств по js: