JavaScript | Как перемешать два массива и склеить в один?

JavaScript | Как перемешать два массива и склеить в один?

У нас есть два массива:

let m1 = [21,22,23,24,25,26,27,28];

let m2 = [81,82,83,84,85,86,87,88];
Два массива из чисел - JavaScript
Два массива из чисел — JavaScript

Мы хотим перемешать элементы каждого массива и потом собрать их все в один массив. Как это сделать?

Нет смысла перемешивать каждый массив по отдельности. Проще всего перемешивать один полный массив.

 

Шаг № 1 — склеивание массивов в один

Воспользуемся методом concat() для экземпляров Array. Вызывать его будет на пустом массиве, объявленном литерально через квадратные скобки.

[].concat(m1, m2)

Это выражение вернёт нам новый массив, не повреждая оригинальные массивы.

Собрали элементы двух массивов в один - JavaScript
Собрали элементы двух массивов в один — JavaScript

Элементы итогового массива будут иметь последовательности как у оригинальных массивов (без перемешивания).

 

Шаг № 2 — перемешивание полного массива

Когда все элементы собраны в один массив, можно приступать к перемешиванию. В этом нам поможет метод sort() для экземпляров Array. В качестве функции сравнения мы будем использовать результат вызова Math.random()-0.5.

[].concat(m1, m2).sort(()=>Math.random()-0.5)

Сортировка сработает как перемешивание. В этом есть некое противоречие, но это работает!

Перемешали два массива и собрали в один - JavaScript
Перемешали два массива и собрали в один — JavaScript

Каждый вызов будет перемешивать наши массивы и собирать их в один.

 

Информационные ссылки

JavaScript | Как перемешать массив?

Стандарт ECMAScripthttps://tc39.es/ecma262/multipage/