Array.from()

Метод from позволяет создать новый экземпляр массива на основе массивоподобного или итерируемого объекта. Начнём с сигнатуры:

from(arrayLike[, mapFn[, thisArg]])

Наибольший интерес вызывает второй параметр — mapFn. Он принимает функцию обратного вызова. Эта функция применяется к каждому элементу массива. Если сказать проще, передача mapFn фактически эквивалентна вызову метода map() у массива: Array.from(arrayLike).map(mapFn).

Как это использовать на практике? Получить массив со случайными числами — один из практических кейсов. Пример:

// Первым аргументом передаём новый массив из трёх элементов,
// а в качестве колбэка — функцию Math.random,
// которая позволяет получить случайное число
Array.from(Array(3), Math.random);

Результатом выполнения станет новый массив со случайными числами: [0.738, 0.037, 0.343]. Неплохо, но вместо чисел с плавающей запятой хочется видеть целые. Можно? Вполне:

Array.from(
  { length: 5 },
  () => Math.floor(Math.random() * 20)
); // [5, 3, 13, 8, 5]

Разберём подробней. Первым аргументом передаём объект с единственным свойством length — этого достаточно для критерия «массивоподобный объект». Вторым аргументом передаём функцию, в которой вызываем Math.random() для получения случайного числа. Умножаем на 20, тем самым ограничивая диапазон возможных чисел до двадцати.

Продолжение следует…