JavaScript/Objects/Array

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Array (ru массив) — объект стандартной библиотеки javascript, который используется для хранения нескольких значений в одной переменной, то есть для создания массивов.

Синтаксис

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

Создание

/* обычный сокращённый синтаксис */
var array = [ elem0, elem1, elem2, ... ]
var empty = []

/* Полный синтаксис с new Array() */
var array = new Array( elem0, elem1, elem2, ...)
var empty = new Array()

/* Редкий синтаксис: аргумент new Array - одно число.
При этом создается массив заданной длины, 
все значения в котором undefined */
var array = new Array(10)

Аргументы

elem0, elem1, …
  • Если ни один из параметров elem0, elem1, ... не указан, то инициализируется пустой массив.
  • Если указан лишь один числовой параметр elem0 и массив объявлен через new Array, то будет инициализирован пустой массив длины, равной данному числу. При этом все элементы являются undefined.
  • В ином случае создается массив из перечисленных элементов.

Массив пронумерованных элементов, также может служить стеком или очередью. Для ассоциативных массивов используйте Object.

Описание

Объект Array предоставляет функционал

  1. Массива с любыми числовыми индексами (разреженного)
  2. Стека/очереди

Для задания массива, как правило, используется синтаксис с квадратными скобками. Объявление через new Array тоже возможно, но почти не используется.

Ассоциативные массивы

Несмотря на то, что массивы в js могут быть как числовые (индексные), так и ассоциативные, всё же массивы в js рекомендуется использовать как упорядоченные списки (очередь), то есть класс Array рекомендуется использовать только для массивов с числовыми индексами. Для ассоциативных массивов в javascript применяется Object.

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

Для многомерных массивов в javascript нет кросс-браузерного синтаксиса.

Свойства объекта Array

Property СвойствоDescription Описание
constructorReturns the function that created the Array object’s prototype. Возвращает функцию, которая создала прототип объекта массива.
lengthSets or returns the number of elements in an array. Устанавливает или возвращает количество элементов в массиве. Свойство не считает количество элементов, а просто берёт самый большой числовой индекс массива и прибавляет к нему 1.
prototypeAllows you to add properties and methods to an Array object. Позволяет добавлять свойства и методы к объекту массива.

Методы объекта Array

Method Description
concat() Joins two or more arrays, and returns a copy of the joined arrays
indexOf() Search the array for an element and returns its position
join() Joins all elements of an array into a string
lastIndexOf() Search the array for an element, starting at the end, and returns its position
pop() Removes the last element of an array, and returns that element
push() Adds new elements to the end of an array, and returns the new length
reverse() Reverses the order of the elements in an array
shift() Removes the first element of an array, and returns that element
slice() Selects a part of an array, and returns the new array
sort() Sorts the elements of an array
splice() Adds/Removes elements from an array
toString() Converts an array to a string, and returns the result
unshift() Adds new elements to the beginning of an array, and returns the new length
valueOf() Returns the primitive value of an array

Добавление/удаление элементов массива

Для более удобной работы с началом и концом массива существуют специальные методы.

  • pop — удаляет последний элемент из массива и возвращает его
  • push — добавляет элемент в конец массива
  • shift — удаляет из массива первый элемент и возвращает его
  • unshift — добавляет элемент в начало массива
// Создание/задание массива
var fruits = new Array();
var fruits = new Array("Яблоко", "Груша");
var fruits = []; // задаём массив
var fruits = ["Яблоко", "Апельсин"]; // задаём массив

// Добавление элементов в конец
fruits.push("Груша", "Арбуз"); // добавляем новые элементы в конец
fruits[fruits.length] = "Дыня"; // добавляем новый элемент в конец

fruits.unshift('Яблоко', 'Клубника'); // добавление элементов в начало

// Удаление элементов
fruits.shift() // удаляет из массива первый элемент и возвращает его
fruits.pop() // удаляет последний элемент из массива и возвращает его

Примеры

Создать пустой массив:

var arr = [];
var arr = new Array();

Добавить элемент в конец:

arr[arr.length] = 5  
/* или */
arr.push(5)

Создать массив из разных элементов:

var arr = [ 4, "test", , false, [0,1] ]

alert(arr[1]) // => "test"
alert(arr[2]) // => undefined
alert(arr[3]) // => false
alert(arr[4][1]) // => 1

Можно добавить объект под любым индексом, даже превосходящим текущую длину массива. При этом массив хранит (и потребляет память) только те элементы, которые установлены.

В примере ниже массив будет хранить два элемента: номер 1 и номер 999. Разреженный массив:

var arr = []
arr[1] = 5
arr[999] = 6

alert(arr[0]) // => undefined, такого значения нет
alert(arr.length) // => 1000 : последний индекс+1

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

// 3 в ширину 3 в высоту
// каждый подмассив - колонка
var matrix = [ [1,2,3], [4,5,6], [7,8,9] ]

alert(matrix[1][1])  // 5

Ссылки