Массивы JavaScript.



Массив – разновидность объекта, которая предназначена для хранения пронумерованных значений и предлагающая дополнительные методы для удобного манипулирования такой коллекцией. Они обычно используются для хранения упорядоченных коллекций данных, например – списка товаров на странице, студентов в группе и многое другое.

Javascript поддерживает два вида массивов:

  • Ассоциативный массив (хеш), где данные хранятся по произвольному ключу.
  • Числовой массив Array, где данные хранятся по номерам.

Объявление массива

Есть два эквивалентных способа создания массива:

var a = new Array()
var a = []

Эти способы работают одинаково, кроме объявления вида new Array(10), когда у конструктора есть единственный аргумент-число. Такое объявление создаст пустой массив (все элементы undefined) длиной 10. По возможности, не используйте new Array.

Авто-длина length

У каждого массива есть свойство length, которое автоматом меняется при каждом обновлении массива. Длина массива — это не количество элементов, а максимальный целый ключ + 1:

alert(a.length) // всего 2 элемента, но выведет 1000000

Очередь + стек

В массиве есть всё необходимое, чтобы работать с ним как с очередью или со стеком, или и с тем и другим одновременно.

Методы push и pop добавляют или вынимают значение с конца массива:

var arr = [3,5,7]
arr.push(9)
var last = arr.pop()    //= 9
var last = arr.pop()   // = 7
alert(arr.length)   // = 2

Методы shift/unshift делают то же самое, с начала массива:

var arr = [4,6,8]
arr.unshift(2) // arr = [2,4,6,8]
arr.unshift(0) // arr = [0,2,4,6,8]
var last = arr.shift() // last = 0, arr = [2,4,6,8]
arr.shift()  // arr = [4,6,8]

shift/unshift обычно приводят к перенумерации всего массива. shift сдвигает все элементы на единицу влево, а unshift — вправо. Поэтому на больших массивах эти методы работают медленнее, чем push/pop.

Перебор массива

Для перебора массивов обычно используется цикл:

var arr = ["Яблоко", "Апельсин", "Груша"];

for (var i = 0; i < arr.length; i++) {
  alert( arr[i] );
}

Доступ к значениям массива

Создадим массив primer, с пятью значениями, в качестве которых будут выступать названия столиц различных государств:

var primer;
    primer = ["Москва", "Берлин", "Пекин", "Лондон", "Токио"];

У каждого значения в массиве, имеется свой числовой индекс, благодаря чему к ним можно получить доступ. Числовые индексы начинаются с нуля. У массива primer имеется 5 значений, первое значение это Москва, его числовой индекс равен нулю 0, второе значение это Берлин, его числовой индекс равен единице 1 и т.д.

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

primer[0]; // получили доступ к первому значению массива,
primer[1]; // получили доступ ко второму значению массива.

Удаление из массива

Так как массивы являются объектами, то для удаления ключа можно воспользоваться обычным delete:

var arr = ["Я", "иду", "домой"];

delete arr[1]; // значение с индексом 1 удалено

// теперь arr = ["Я", undefined, "домой"];
alert( arr[1] ); // undefined

Элемент удален из массива, но не так, как этого хочется. Образовалась «дырка». Это потому, что оператор delete удаляет пару «ключ-значение». Это – все, что он делает. Обычно же при удалении из массива мы хотим, чтобы оставшиеся элементы сдвинулись и заполнили образовавшийся промежуток.

Поэтому для удаления используются специальные методы: из начала – shift, с конца – pop, а из середины – splice.

Метод splice

Метод splice – это универсальный раскладной нож для работы с массивами. Умеет все: удалять элементы, вставлять элементы, заменять элементы – по очереди и одновременно.

Пример удаления массива:

var arr = ["Я", "изучаю", "JavaScript"];

arr.splice(1, 1); // начиная с позиции 1, удалить 1 элемент

alert( arr ); //  осталось ["Я", "JavaScript"]

Пример удаления и вставки массива:

var arr = ["Я", "сейчас", "изучаю", "JavaScript"];

// удалить 3 первых элемента и добавить другие вместо них
arr.splice(0, 3, "Мы", "изучаем")

alert( arr ) // теперь ["Мы", "изучаем", "JavaScript"]

Метод slice

Метод slice(begin, end) копирует участок массива от begin до end, не включая end. Исходный массив при этом не меняется. Пример:

var arr = ["Почему", "надо", "учить", "JavaScript"];

var arr2 = arr.slice(1, 3); // элементы 1, 2 (не включая 3)

alert( arr2 ); // надо, учить

Метод join()

Метод Array.join() преобразует все элементы массива в строки, объединяет их и возвращает получившуюся строку. В необязательном аргументе методу можно передать строку, которая будет использоваться для отделения элементов в строке результата. Если строка-разделитель не указана, используется запятая. Пример:

var mass = [1,2,3];
mass.join();	
mass.join("-");	

Метод reverse()

Метод Array.reverse() меняет порядок следования элементов в массиве на обратный и возвращает переупорядоченный массив. Перестановка выполняется непосредственно в исходном массиве, т.е. этот метод не создает новый массив с переупорядоченными элементами, а переупорядочивает их в уже существующем массиве. Например, следующий фрагмент, где используются методы reverse() и join(), дает в результате строку «3,2,1»:

var arr = [1,2,3];
arr.reverse().join(); // "3,2,1"

Метод sort()

Метод Array.sort() сортирует элементы в исходном массиве и возвращает отсортированный массив. Если метод sort() вызывается без аргументов, сортировка выполняется в алфавитном порядке. Неопределенные элементы переносятся в конец массива.

Метод concat()

Метод Array.concat() создает и возвращает новый массив, содержащий элементы исходного массива, для которого был вызван метод concat(), и значения всех аргументов, переданных методу concat(). Если какой-либо из этих аргументов сам является массивом, его элементы добавляются в возвращаемый массив. Метод concat() не изменяет исходный массив.

var arr = [1,2,3];
arr.concat(4, 5);		// Вернет	[1,2,3,4,5]
arr.concat([4,5]);		// Вернет	[1,2,3,4,5]
arr.concat([4,5],[6,7])	// Вернет	[1,2,3,4,5,6,7]
arr.concat(4, [5,[6,7]]) // Вернет	[1,2,3,4,5,[6,7]]

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

Многомерный массив – это массив, значениями которого являются другие массивы. Для доступа к элементам, которые в качестве значения содержат массив используются квадратные скобки. В первых скобках указывается индекс элемента для доступа к внутреннему массиву, так как в качестве значения элемента содержится ещё один массив, то во вторых скобках указывается индекс элемента внутреннего массива:

var mass = [
  [1,2,3],
  [4,5,6],
  [7,8,9],
];
alert(mass[1][2]);   // 6

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Chinese (Traditional)EnglishJapaneseRussianUkrainian

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: