Методы массивов: flat, fill
Метод flat
Данный метод появился недавно, но он очень крут. Он создает новый массив из всех подмассивов содержащихся в нем уменьшая мерность на указанное значение(по умолчанию 1). Наверное звучит очень сложно и запутанно и, скорее всего, прямо сейчас ты мало где сможешь применить данный метод на практике. Но пример все-равно давай посмотрим:
const arr = [1, 2, 3, [4, 5], [[7,8]]]; const transformArr = arr.flat(); transformArr; //[1, 2, 3, 4, 5, [7, 8]]
Как видишь, массив arr
был преобразован в новый. Как ты можешь заметить, все подмассивы, которые были внутри массива arr
как бы "распаковались" на 1 уровень вложенности. Если третьим элементом в массиве arr был массив [4, 5]
, то сейчас он распаковался и перестал существовать как массив.
В этом же массиве arr
4-ым элементом был массив с массивом (т.е. это 2 уровня вложенности), но теперь он выглядит как простой массив [7, 8]
, т.е. начальный массив с массивом распаковался в обычный массив (один уровень вложенности исчез).
Этот уровень "сглаживания" вложенности, который, повторюсь, по умолчанию равен 1
– может быть задан. Для этого в метод flat
нужно передать число, которое и будет являться этим уровнем "сглаживания".
Так как мы не всегда можем знать уровень вложенности подмассивов, мы можем указать в качестве параметра значение бесконечности – Infinity
. Это позволит нам убрать абсолютно все вложенности во всех подмассивах. Пример:
const arr = [1, 2, 3, [4, 5], [[7,8]]]; const transformArr = arr.flat(Infinity); transformArr; //[1, 2, 3, 4, 5, 7, 8]
Какие бы глубины вложенности не были теперь массивы внутри массива arr
, они всегда будут распакованы в один одноуровневый массив.
Метод fill
Метод fill
заменяет или заполняет элементы массива одним и тем же значением. Для замены или заполнения конкретных отрезков массива можно указать индексы начального и конечного элементов, которые требуют заполнения/замены.
const arr = [1, 2, 3, 4]; arr.fill(0, 2, 4) arr; // [1, 2, 0, 0]
Рассмотрим вызов метода:
arr.fill(0, 2, 4)
Первый аргумент – значение, которым заполнять/заменять элементы массива;
Второй аргумент – индекс после которого начинать вставлять указанное значение;
Третий аргумент – индекс до которого вставлять указанное значение.
Получаем:
arr; // [1, 2, 0, 0]
Что полностью соответствует ожиданиям.