Глава 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+).
Свойство 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 возвращает новый массив, содержащий указанную часть исходного массива. Аргумент начало задает индекс первого элемента копируемой части, необязательный аргумент конец индекс ее последнего элемента. При этом:
Например, сценарий 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. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||