Документация JavaScript
| Документация DHTML | Документация Smarty | SVG/VML Графика и JavaScript
| Документация bash |
Глава 3.10. Массивы: встроенный объект Array
Объект Array используется для создания массивов, т. е. упорядоченных наборов элементов любого типа. Доступ к элементу массива производится по его номеру в массиве, называемому индексом элемента; обозначается i-й элемент массива a как a[i]. Элементы массива нумеруются с нуля, т. е. массив a, состоящий из N элементов, содержит элементы a[0], a[1], , a[N-1].
Для создания массивов используются следующие конструкторы массивов:
new Array() new Array(размер) new Array(элемент0, элемент1, , элементN)
Здесь размер любое числовое выражение, задающее количество элементов в массиве; элемент0, элемент1, , элементN любые выражения.
Первый конструктор создает пустой массив, второй массив из размер элементов, третий создает массив из N+1 элементов и присваивает им соответствующие значения. Если размер не является числом без знака, то создается массив с единственным элементом, имеющим это значение.
Кроме того, массив может быть создан с помощью инициализатора массива:
[элемент0, элемент1, , элементN]
Примеры:
var a = new Array(5); // массив из 5 элементов var b = new Array("строка"); // массив из 1 элемента "строка" var c = new Array(1, 2, 3); // массив из 3 элементов: 1, 2 и 3 var d = ["1", "2", "3"]; // то же самое
Мы можем неявно увеличить размер массива, присвоив значение элементу с несуществующим индексом, например:
var colors = new Array(); // пустой массив colors[99] = "пурпурный"; // размер массива стал равен 100
Функции сопоставления строки с регулярным выражением (RegExp.exec
Поддержка: Методы pop, push, shift, unshift поддерживаются с версии 5.5. Соответствует стандарту (4.0+).
Свойство | Описание | Член прототипа |
---|---|---|
constructor | Конструктор, который создал объект. | Да |
length | Количество элементов в массиве. | Нет |
prototype | Ссылка на прототип класса объектов. | Нет |
Метод | Описание | Член прототипа |
---|---|---|
concat | Объединяет два массива в один новый и возвращает его. | Да |
join | Объединяет все элементы массива в текстовую строку. | Да |
pop | Удаляет последний элемент массива. | Да |
push | Добавляет элементы в конец массива. | Да |
reverse | Изменяет порядок элементов массива на противоположный. | Да |
shift | Удаляет первый элемент массива и возвращает его. | Да |
slice | Извлекает часть массива и возвращает новый массив. | Да |
sort | Сортирует элементы массива. | Да |
splice | Заменяет часть массива. | Да |
toLocaleString | Преобразует массив в строку с учетом формата операционной системы. | Да |
toString | Преобразует массив в строку. | Да |
unshift | Добавляет элементы в начало массива. | Да |
valueOf | Возвращает примитивное значение массива. | Да |
Свойство length
Синтаксис: массив.length Атрибуты: { DontEnum, DontDelete }
Значением свойства length является размер массива, т. е. количество элементов в нем, например:
var x = new Array(); x[0] = "Строка"; x[5] = "Еще строка"; var l = x.length; // l равно 6
Мы можем явно задать новый размер массива, изменяя значение свойства length. Если при этом новый размер массива меньше текущего, то лишние элементы массива будут удалены. Если же новый размер массива больше текущего, то к массиву будут добавлены новые элементы со значением undefined.
Метод concat
Синтаксис: массив.concat(массив1) Аргументы: массив1 выражение, возвращающее массив Результат: новый массив
Метод concat объединяет массив и массив1 в новый массив и возвращает его. При этом все элементы массива массив1 добавляются в конец массива. Например, сценарий
var x = new Array(1, 2, 3); var y = new Array(4, 5, 6); document.write(x.concat(y));
выведет на экран обозревателя строку 1,2,3,4,5,6.
См. также WDH+: Метод concat работает правильно.
Метод join
Синтаксис: массив.join(разделитель) Аргументы: разделитель любое строковое выражение Результат: строковое значение
Метод join преобразует массив в строковое значение. Для этого все элементы массива преобразуются в строки, и эти строки объединяются в одну строку. Разделителем между ними в .результирующей строке является строка разделитель; если она опущена, то разделителем служит пустая строка. Например, сценарий
var x = new Array(1, 2, 3); document.write(x.join("-"));
выведет на экран обозревателя строку 1-2-3.
Метод pop
Синтаксис: массив.pop() Результат: значение последнего элемента массива
Метод pop удаляет последний элемент массива и возвращает его в качестве результата. Размер массива при этом уменьшается на 1. Например, сценарий
var x = ["a", "b", "c", "d"] x.pop(); document.write(x);
выведет на экран обозревателя строку a,b,c.
Методы push и pop позволяют реализовать программный стек на базе объектов Array.
Метод push
Синтаксис: массив.push(элемент1, , элементN) Аргументы: элемент1, , элементN любые выражения Результат: новая длина массива
Метод push добавляет значения аргументов в конец массива и возвращает в качестве результата новый размер массива, который при этом увеличивается на N. Например, сценарий
var x = ["a", "b", "c", "d"] document.write(x.push("e");
выведет на экран обозревателя число 5.
Методы push и pop позволяют реализовать программный стек на базе объектов Array.
Метод reverse
Синтаксис: массив.reverse() Результат: массив
Метод reverse изменяет порядок элементов в массиве на противоположный. При этом новый объект Array не создается, перестановка элементов производится в исходном массиве. Если не все элементы массива были определены, то им присваивается значение undefined. Например, сценарий
var x = new Array(); x[0] = 0; x[2] = 2; x[4] = 4; document.write(x.reverse());
выведет на экран обозревателя строку 4,,2,,0.
Метод shift
Синтаксис: массив.shift() Результат: значение первого элемента массива
Метод shift удаляет первый элемент массива и возвращает его в качестве результата. Размер массива при этом уменьшается на 1. Например, сценарий
var x = ["a", "b", "c", "d"] x.shift(); document.write(x);
выведет на экран обозревателя строку b,c,d.
Методы shift и unshift позволяют реализовать программную очередь на базе объектов Array.
Метод slice
Синтаксис: массив.slice(начало [,конец]?) Аргументы: начало и конец любые числовые выражения Результат: новый массив
Метод slice возвращает новый массив, содержащий указанную часть исходного массива. Аргумент начало задает индекс первого элемента копируемой части, необязательный аргумент конец индекс ее последнего элемента. При этом:
- Если значение конец неотрицательно, то копируются элементы массив[начало], массив[начало+1], , массив[конец-1].
- Если значение конец отрицательно, то копируются элементы массив[начало], массив[начало+1], , массив[массив.length-конец-1], т. е. конец означает смещение от конца массива.
- Если аргумент конец отсутствует, то копируются элементы массив[начало], массив[начало+1], , массив[массив.length-1], т. е. копируются все элементы до конца массива.
Например, сценарий
var x = new Array(10); for (i = 0; i < 10; i++) x[i] = i; document.write(x.slice(5,-1));
выведет на экран обозревателя строку 5,6,7,8.
Метод sort
Синтаксис: массив.sort(функция?) Аргументы: функция функция сортировки, описанная ниже Результат: массив
Метод sort сортирует элементы массива. При этом новый объект Array не создается, перестановка элементов производится в исходном массиве. Способ сортировки задается необязательным аргументом функция; если аргумента нет, то производится сортировка в лексикографическом порядке по возрастанию значений элементов, которые предварительно преобразуются в строки.
Функция должна иметь вид:
function compare(a, b) { if (a меньше b по критерию сортировки) return -1; if (a больше b по критерию сортировки) return 1; return 0; // a равно b }
Приведем пример сортировки массива в лексикографическом порядке по убыванию значений элементов. Следующий сценарий
function cmp(a, b) { if (String(a) > String(b)) return -1; if (String(a) < String(b)) return 1; return 0; } var flowers = ["астра", "роза", "пион", "ромашка"]; document.write(flowers.sort(cmp));
выведет на экран обозревателя строку ромашка,роза,пион,астра.
Метод splice
Синтаксис: массив.splice(начало, счетчик [,элементы]?) Аргументы: начало и счетчик любые числовые выражения элементы список любых выражений через запятую Результат: новый массив
Поддержка: Поддерживается с версии 5.5. Не поддерживается.
Метод splice удаляет часть массива и возвращает ее в качестве результата. Если заданы элементы, то они вставляются вместо удаленной части массива. Аргумент начало задает индекс первого элемента удаляемой части, аргумент счетчик количество удаляемых элементов. Например, сценарий
var x = new Array(10); for (i = 0; i < 10; i++) x[i] = i; x.splice(5, 3, -5, -6, -7); document.write(x);
выведет на экран обозревателя строку 0,1,2,3,4,-5,-6,-7,8,9.
Метод toLocaleString
Синтаксис: массив.toLocaleString() Результат: строковое значение
Метод toLocaleString преобразует массив в строковое значение, учитывая формат операционной системы. Результат зависит от объекта. Обычно он дает тот же результат, что и метод toString.
Метод toString
Синтаксис: массив.toString() Результат: строковое значение
Метод toString преобразует массив в строковое значение. Для этого все элементы массива преобразуются в строки, и эти строки объединяются в одну строку через запятую. Например, сценарий
var x = new Array(1, 2, 3); document.write(x.toString());
выведет на экран обозревателя строку 1,2,3.
Метод unshift
Синтаксис: массив.unshift(элемент1, , элементN) Аргументы: элемент1, , элементN любые выражения Результат: новая длина массива
Метод unshift добавляет значения аргументов в начало массива и возвращает в качестве результата новый размер массива, который при этом увеличивается на N. Например, сценарий
var x = ["a", "b", "c", "d"] document.write(x.unshift("e"));
выведет на экран обозревателя число 5.
Методы shift и unshift позволяют реализовать программную очередь на базе объектов Array.
Метод valueOf
Синтаксис: массив.valueOf() Результат: строковое значение
Метод valueOf возвращает примитивное значение массива. Для этого все элементы массива преобразуются в строки, и эти строки объединяются в одну строку через запятую. Иными словами, этот метод возвращает тот же результат, что и метод toString.