Многомерные массивы в JavaScript

Понедельник, 21 Ноябрь 2016 13:29

Продолжаем работать с массивами в JavaScript. В этой статье мы познакомимся с так называемыми многомерными массивами в JavaScript, а также рассмотрим некоторые особенности работы с массивами в языке JavaScript.

В массив, как мы уже знаем, можно положить любое значение: строку или число. Также в массив при желании можно сохранить и объект:

1.var names = ['John''James''Jane', {name1: 'Иванов', name2: 'Петров', name3:'Сидоров'}];
2.console.log(names);
 

Получить доступ к любому свойству объекта — не сложно:

1.console.log(names[3].name1); // Иванов

Возможность хранить объекты в массиве используется не часто, но такая возможность есть. Кроме этого мы можем хранить в массиве вложенные массивы. В этом случае массив называется многомерным, то есть массивом с более чем одним уровнем. Вот как это выглядит на практике:

1.var names = [
2.['Иван''Петр'],
3.['Иванов''Петров']
4.];
5.console.log(names);
 

Здесь мы в первом элементе, с ключом 0, родительского массива храним имена, а во втором, с ключом 1, храним фамилии. Выведем фамилии и имена, соответствующие им:

1.console.log(names[0][0] + ' ' + names[1][0]); // Иван Иванов
2.console.log(names[0][1] + ' ' + names[1][1]); // Петр Петров
 

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

1.for(var i = 0; i < names.length; i++){
2.console.log(names[0]<em></em> + ' ' + names[1]<em></em>);
3.}
 

И, наконец, поговорим о некоторых нюансах работы с массивами, в частности о свойстве length. Как вы помните, данное свойство возвращает длину массива. Иногда я мог говорить, что length вернет количество элементов массива. На самом деле это не совсем так, и говорил я количестве элементов исключительно для того, чтобы вам было понятнее на первых порах.

На самом деле свойство length возвращает последний индекс массива + 1. Вы можете сказать, что это и будет количеством элементов массива, коль нумерация массива начинается с нуля. Все правильно. Вот только нумерация массива не обязательно может начинаться с нуля. Пример:

1.var names = [];
2.names[5] = 'John';
 

Мы объявили массив и положили в него всего один элемент с ключом 5. Если сейчас мы посчитаем длину массива, то с удивлением обнаружим, что она равна не 1, а 6:

1.console.log(names.length); // 6
 

JavaScript считает не только значимый элемент, но и все прочие, незаполненные элементы, начиная с 0. Учтите это, если столкнетесь с подобным массивом.

Еще одной интересной особенностью свойства length является то, что через него мы можем влиять на сам массив, уменьшая его длину. Простой пример:

1.var names = ['John''James''Jane''Jake'];
2.console.log(names);
3.names.length = 2;
4.console.log(names);
 

Таким образом мы сократили количество элементов массива до двух, прочие элементы при этом были удалены. Отсюда мы можем взять простой способ удаления всех элементов массива, сделав его пустым при необходимости:

1.var names = ['John''James''Jane''Jake'];
2.names.length = 0;
3.console.log(names); // []