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

Объединение нескольких массивов

С помощью concat можно объединить больше чем два массива. Для этого

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

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

var scalyAnimals = ["Удав", "Годзилла"];

Animals —

var featheredAnimals = ["Ара", "Додо"];

животные

var allAnimals = furryAnimals.concat(scalyAnimals, 

с перьями

featheredAnimals);

All animals —

allAnimals;

все животные

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

"Ара", "Додо"]

Мы видим, что пернатые животные из массива featheredAnimals

оказались в самом конце нового массива, поскольку featheredAnimals

был указан последним в скобках метода concat.

Метод concat удобен, когда нужно объединить несколько массивов

в один. Скажем, пусть у вас есть список любимых книг и у вашего друга

тоже есть свой список, и вы решили выяснить, можно ли купить все эти

книги в магазине по соседству. Тогда будет проще, если у вас будет не два

списка, а один. Просто объедините ваш список со списком вашего друга

методом concat, и пожалуйста — у вас один список на двоих!

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

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

Color — цвет

сиве, используйте .indexOf("элемент"). Создадим массив colors

с названиями цветов, а затем получим индексы элементов «синий»

и «зеленый» с помощью команд colors.indexOf("синий") и colors.

indexOf("зеленый"). Поскольку "синий" располагается по индексу 2,

colors.indexOf("синий") вернет 2. А "зеленый" находится по ин-

дексу 1, так что colors.indexOf("зеленый") вернет 1.

var colors = ["красный", "зеленый", "синий"];

colors.indexOf("синий");

2

colors.indexOf("зеленый");

1

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

Метод indexOf похож на квадратные скобки, только здесь все наобо-

рот: команда colors[2] вернет "синий", а colors.indexOf("синий")

вернет 2.

colors[2];

"синий"

colors.indexOf("синий");

2

Хотя элемент "синий" стоит третьим по порядку, его индекс равен 2,

ведь мы всегда считаем с 0. Разумеется, то же относится к "зеленый"

с индексом 1.

Если элемента, индекс которого вы запрашиваете, в массиве нет,

JavaScript вернет значение −1.

colors.indexOf("фиолетовый");

-1

Таким образом JavaScript сообщает: «элемент не найден», так или

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

Если элемент встречается в массиве больше чем один раз, indexOf

вернет индекс того элемента, который находится ближе к началу массива.

var insects = ["Пчела", "Муравей", "Пчела", "Пчела", "Муравей"]; Insects —

insects.indexOf("Пчела");

насекомые

0

Превращаем массив в строку

Воспользовавшись методом .join(), можно соединить все элементы

Join —

массива в одну большую строку.

соединить

Boring

var boringAnimals = ["Мартышка", "Кот", "Рыба", "Ящерица"]; animals —

boringAnimals.join();

скучные

"Мартышка,Кот,Рыба,Ящерица"

животные

Метод join возвращает строку, в которой через запятую перечис-

лены все элементы массива boringAnimals. Но что если мы не хотим

использовать в качестве разделителя запятую?

Нам поможет метод .join ("разделитель"), который делает все

то же самое, но вместо запятых ставит между элементами выбранный

3. Массивы 61

разделитель. Давайте попробуем три разных разделителя:

дефис с пробелами по сторонам, звездочку * и союз «и»

с пробелами по сторонам. Обратите внимание: разделитель

нужно записывать в кавычках — ведь это строка.

var boringAnimals = ["Мартышка", "Кот", "Рыба", "Ящерица"]; boringAnimals.join(" - ");

"Мартышка - Кот - Рыба - Ящерица"

boringAnimals.join("*")

"Мартышка*Кот*Рыба*Ящерица"

boringAnimals.join(" и ")

"Мартышка и Кот и Рыба и Ящерица"

Этот вариант join удобен, когда у вас есть массив, из которого нужно

Среднее

сделать строку. Предположим, у вас много средних имен и вы решили

имя — имя,

хранить их все в массиве вместе со своим личным именем и фамилией.

обычно рас-

И вдруг кому-то понадобилось ваше полное имя в виде строки. Тогда

положенное

метод join с разделителем-пробелом преобразует все имена в искомую

между лич-

ным именем

строку:

и фамилией.

Используется

как элемент

var myNames = ["Николас", "Эндрю", "Максвелл", "Морган"]; полного

myNames.join(" ");

имени,

"Николас Эндрю Максвелл Морган”

в основном

в Европе

и западных

Не будь метода join, пришлось бы соединять элементы вручную,

странах.

что очень утомительно:

myNames[0] + " " + myNames[1] + " " + myNames[2] + " " + myNames[3];

"Николас Эндрю Максвелл Морган"

Кроме того, этот код сработает, только если у вас ровно два средних

имени. Если же их три или одно, программу придется менять. А c join

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

полную версию книги