Неразрушающие методы

В своем предыдущем блоге я рассмотрел некоторые методы JavaScript, которые можно использовать для деструктивного манипулирования массивами. Ниже я расскажу о методах, которые вы можете использовать для добавления или удаления элементов массива неразрушающим образом. Это означает, что эти методы не изменяют напрямую массив, для которого они вызываются.

ДОБАВЛЕНИЕ ЭЛЕМЕНТОВ

Используя тот же пример, который мы использовали в предыдущем блоге, мы начнем с нашего массива из четырех щенков:

Леди родилась! Чтобы получить новый массив всех наших щенков, включая Леди, мы можем использовать метод concat(). concat() возвращает копию массива, для которого он вызывается, добавляя значения переданных аргументов.

Обратите внимание, что здесь concat() возвращает новый массив с добавленным щенком в качестве последнего элемента. Кроме того, наш массив puppies не изменился. Мы можем сохранить этот возвращенный массив в новой переменной, которая будет представлять полный мусор:

Если мы зарегистрируем allPups, мы увидим, что наш новый массив содержит все пять щенков:

Если бы мы хотели добавить ‘Lady’ в начало массива, мы могли бы также использовать concat(). В этом случае, поскольку мы хотим, чтобы новый элемент был первым, нам пришлось бы вызывать метод concat() для пустого массива, например:

СНЯТИЕ ЭЛЕМЕНТОВ

Первый проданный щенок - Бейли. Чтобы получить новый массив наших щенков за вычетом Бейли, мы можем использовать метод slice(). Подобно concat(), slice() возвращает копию массива, для которого он вызывается, без изменения этого массива:

давайте сохраним эту копию:

Метод slice() принимает два аргумента. Первым является начальный индекс, а вторым аргументом — конечный индекс. slice() копирует элементы, начиная с начального индекса, до элемента прямо перед конечным индексом.

СОВЕТ. Если аргументы не переданы, concat() и slice() вернут копию всего вызываемого массива.

В приведенном выше примере мы передали только первый аргумент. Таким образом, slice узнает, что нам нужна копия массива из предоставленного индекса до конца массива.

Регистрация minusFirstSale даст нам:

Наш следующий покупатель хочет двух щенков, Джакса и Олли.

Если мы попробуем следующее:

возвращаемое значение представляет собой массив только с извлеченными элементами:

Получение нового массива с оставшимися щенками может быть немного сложным. Для этого мы можем использовать комбинацию методов. Давайте используем slice() и concat():

здесь мы используем метод concat() для соединения двух фрагментов или извлеченных частей массива minusFirstSale.

Это дает нам результаты, которые мы ищем:

ПРИМЕЧАНИЕ.Важно отметить, что concat() и slice() возвращают поверхностную копию массива, к которому они вызываются. Это означает, что если бы мы внесли изменения в исходный массив, эти изменения также отразились бы на его копиях.

ЗАМЕНА ЭЛЕМЕНТОВ

Поэтому, когда владельцы Бэйли возвращают его в обмен на Купера, мы можем перебирать наш массив minusSecondSale с map(), заменяя элементы, сохраняя при этом исходный набор данных:

Если мы зарегистрируем новый массив minusThirdSale, мы получим:

В ожидании документов Купера владельцы замечают, что Бейли и Купер — идеальная собачья компания! Видимо, эти двое уравновешивают друг друга.

Поэтому они снова покупают Бейли:

Это оставляет нас с последним из помета, нашей очаровательной Леди.

Она точно не будет доступна слишком долго! 🐾

Чтобы узнать больше о методах массива JavaScript, перейдите по ссылкам ниже: