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, тем самым ограничивая диапазон возможных чисел до двадцати.
Продолжение следует…