Выбрать главу

отчего остальные элементы сдвинулись вперед —

при каждом добавлении их индексы увеличивались

на 1. В результате элемент "Кот", у которого раньше

был индекс 0 , оказался под индексом 2 .

Как и push, метод unshift при каждом вызове

задает новую длину массива.

Удаление элементов массива

Убрать из массива последний элемент можно, добавив к его имени

.pop(). Метод pop делает сразу два дела: удаляет последний элемент Pop —

из массива и возвращает этот элемент в виде значения. Для примера

буквально

начнем с нашего массива animals ["Белый медведь", "Мартышка",

«выдавить»

"Кот", "Пес", "Лама"]. Далее создадим новую переменную lastAnimal Last animal —

и сохраним в ней последний элемент, вызвав animals.pop().

последнее

животное

animals;

["Белый медведь", "Мартышка", "Кот", "Пес", "Лама"]

 var lastAnimal = animals.pop();

lastAnimal;

"Лама"

animals;

["Белый медведь", "Мартышка", "Кот", "Пес"]

 animals.pop();

"Пес"

animals;

["Белый медведь", "Мартышка", "Кот"]

 animals.unshift(lastAnimal);

4

animals;

["Лама", "Белый медведь", "Мартышка", "Кот"]

При вызове animals.pop() в строке  последний элемент массива

animals, "Лама", был возвращен и сохранен в переменной lastAnimal.

3. Массивы 57

Кроме того, элемент "Лама" был удален из массива, в котором после

этого осталось четыре элемента. При следующем вызове animals.pop()

в строке  был удален из массива и возвращен элемент "Пес", а элемен-

тов в массиве осталось всего три.

Вызвав animals.pop() для элемента "Пес", мы не сохранили это

значение в переменной, и оно пропало. С другой стороны, элемент "Лама"

был сохранен в переменной lastAnimal, чтобы при случае им можно было

снова воспользоваться. В строке  мы с помощью unshift(lastAnimal)

добавили "Лама" обратно, в начало массива. В итоге получился массив

["Лама", "Белый медведь", "Мартышка", "Кот"].

Методы push и pop хорошо друг друга дополняют, поскольку порой

нужно работать только с концом массива. Вы можете добавить элемент

в конец вызовом push, а потом, когда это понадобится, забрать его оттуда

вызовом pop. Мы рассмотрим это на примере чуть позже в этой главе.

"

"Лама

["Белый медведь", "Мартышка", "Кот", "Пес", ]

push

pop

"Лама

["Кот", "Пес", ]

"

Чтобы удалить из массива первый элемент, вернув его значение,

используйте .shift():

animals;

["Лама", "Белый медведь", "Мартышка", "Кот"]

First animal —

var firstAnimal = animals.shift();

первое

firstAnimal;

животное

"Лама"

animals;

["Белый медведь", "Мартышка", "Кот"]

Метод animals.shift() работает аналогично animals.pop(),

но элемент берется из начала массива. В начале этого примера массив

animals имел вид ["Лама", "Белый медведь", "Мартышка", "Кот"].

Вызов .shift() вернул первый элемент, "Лама", который мы сохранили

в переменной fi rstAnimal. Поскольку .shift() не только возвращает

элемент, но и удаляет его, в массиве animals осталось лишь ["Белый

медведь", "Мартышка", "Кот"].

58 Часть I. Основы

Методы unshift и shift добавляют и удаляют элементы с начала

массива — так же как push и pop добавляют и удаляют элементы с конца.

"Лама"

[ , "Белый медведь", "Мартышка", "Кот"]

shift

unshift

"Лама"

[ , "Белый медведь", "Мартышка", "Кот"]

Объединение массивов

Чтобы «склеить» два массива, создав таким образом

новый массив, используйте команду fi rstArray.

First Array —

concat(otherArray). Метод concat создает мас-

первый массив

сив, в котором элементы из fi rstArray будут распо-

Other Array —

ложены перед элементами из otherArray.

другой массив

Пускай у нас есть два списка — список

пушистых животных и список чешуйчатых

животных — и мы хотим их объединить. Если

поместить наших пушистых животных в мас-

Furry animals —

сив furryAnimals, а чешуйчатых — в мас-

пушистые

сив scalyAnimals, команда furryAnimals.

животные

concat(scalyAnimals) создаст новый массив,

Scaly animals —

в начале которого будут элементы из первого мас-

чешуйчатые

сива, а в конце — из второго.

животные

var furryAnimals = ["Альпака", "Кольцехвостый лемур", "Йети"]; var scalyAnimals = ["Удав", "Годзилла"];

var furryAndScalyAnimals = furryAnimals.concat(scalyAnimals);

Furry and scaly

furryAndScalyAnimals;

animals —

["Альпака", "Кольцехвостый лемур", "Йети", "Удав", "Годзилла"]

пушистые

и чешуйчатые

furryAnimals;

животные

["Альпака", "Кольцехвостый лемур", "Йети"]

scalyAnimals;

["Удав", "Годзилла"]

3. Массивы 59

Хоть команда fi rstArray.concat(otherArray) и возвращает мас-

сив, содержащий все элементы из fi rstArray и otherArray, сами эти

массивы остаются прежними. Запросив содержимое furryAnimals

и scalyAnimals, мы видим, что массивы не изменились.