Короткий ответ:
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]
Вот процесс, который я придумал. Учитывая массив список :
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.
Вы можете прочитать все подробности о Array.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)
Оригинал: “https://flaviocopes.com/how-to-shuffle-array-javascript/”