JavaScript для тупых
  • JavaScript для тупых
  • Главная
  • Об учебнике
  • Формат обучения
  • Ввод в JavaScript. Что это? И для чего нужен?
  • Братки JavaScript-а
  • Переменные в JavaScript
  • Переменные. const, let, var
  • Преобразование типов
  • Операторы сравнения
  • Типы данных. Number
  • Типы данных. String
  • Типы данных. Boolean
  • Типы данных. null и undefined
  • Типы данных. Оператор typeof
  • Условные операторы: if и ?
  • Циклы: while, for
  • Операторы
  • Логические операторы
  • Знакомство с switch
  • Функции
  • Функции. Возврат значения
  • Стрелочные функции
  • Знакомство с DOM
  • DOM-элементы. Получение объектов
  • DOM-элементы. События. Ввод.
  • DOM-элементы. События. Часть 2
  • Объекты. Начало игры
  • Массивы
  • Методы массивов: splice, slice, concat
  • Методы массивов: find, findIndex, filter
  • Методы массивов: map, sort
  • Методы массивов: reverse, split, join
  • Методы массивов: indexOf, lastIndexOf, includes
  • Методы массивов: reduce, spread
  • Методы массивов: Array.isArray, some, every
  • Методы массивов: flat, fill
  • Планирование вызова функции: setTimeout
  • Планирование вызова функции: setInterval
  • Объекты. Свойства.
  • Объекты. Методы
  • this, call, apply, bind
  • Замыкания
  • Прототипы
  • Promises (Обещания)
Powered by GitBook
On this page

Was this helpful?

Методы массивов: flat, fill

JavaScript простым языком

PreviousМетоды массивов: Array.isArray, some, everyNextПланирование вызова функции: setTimeout

Last updated 4 years ago

Was this helpful?

Метод 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]

Что полностью соответствует ожиданиям.

Generic badge