Цикл статей «Учебник Javascript».
Следующая статья — «Объекты в Javascript можно использовать в качестве ассоциативных массивов».
Предыдущая статья — «Подмена контекста – call, apply в Javascript».
В Javascript есть три способа объявления массивов.
1 2 3 |
[element0, element1, ..., elementN] new Array(element0, element1[, ...[, elementN]]) new Array(arrayLength) |
Первый способ наиболее часто используется. Второй способ делает то же самое, что и первый, но длиннее. Третий способ похож на второй, но инициализирует массив с длиной arrayLength. Второй и третий способы довольно похожи. Тут нужно запомнить, что если у конструктора Array один аргумент, то инициализируется массив с длиной, а не с этим одним элементом.
Размер массива можно менять после инициализации. Также массивы в Javascript не являются плотными, то есть в нём могут быть дыры (вместо некоторых элементов будет возвращаться undefined).
Массивы в Javascript индексируются с нуля. Первый элемент массива имеет индекс 0.
1 2 3 4 5 |
var arr1 = ["первый", "второй", "третий"]; alert(arr1[0]); //первый alert(arr1[1]); //второй alert(arr1[2]); //третий alert(arr1[3]); // undefined. Элемента с таким индексом нет. |
Элементы массива являются свойствами. Но к ним нельзя обратиться с помощью точки, так как с помощью точки нельзя обратиться к свойствам, имя которых начинается с цифры. Но к ним можно обратиться через квадратные скобки.
1 2 |
var arr1 = ["первый", "второй", "третий"]; alert(arr1['1']); |
Длину массива можно узнать с помощью свойства length. Это свойство можно как считывать, так и присваивать. Если свойству length присвоить большее значение, то новые элементы добавятся в конец, если меньшее, то лишние элементы удалятся с конца.
1 2 3 4 |
var arr1 = ["первый", "второй", "третий"]; alert(arr1.length); // 3 arr1.length = 5; alert(arr1); //первый,второй,третий,, <- две запятые в конце обрамляют пустые элементы. |
Наиболее часто используемые методы массивов:
Array.isArray(obj)
Возвращает true, если объект obj является массивом, false — в противном случае.
<массив>.pop()
Удаляет последний элемент из массива и возвращает его значение. Совместно с push используется для организации стека на базе массива.
<массив>.push(el1, el2, …, elN)
Добавляет один или несколько элементов в конец массива. Возвращает новую длину массива. Совместно с pop используется для организации стека на базе массива.
<массив>.reverse()
Переворачивает порядок элементов в массиве. Последний элемент становится первым, а первый — последним.
<массив>.shift()
Удаляет первый элемент из массива и возвращает его.
<массив>.unshift(el1, el2, …, elN)
Добавляет один или несколько элементов в начало массива и возвращает новое значение длины массива.
<массив>.sort([compareFunction])
Сортирует массив. Если compareFunction не указан, то массив сортируется в соответствии с сортировкой строк, полученных на основе его элементов, либо. Если compareFunction указан, то порядок сортировки определяется этой функцией. Функция сравнения принимает два аргумента и должна возвращать -1, если первый аргумент меньше второго, 0 — они равны, 1 — первый аргумент больше второго. Возвращает отсортированный массив (который является исходным массивом, так как сортировка происходит в нём).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var arr2 = [4,2,9,-5, 10] arr2.sort(); alert(arr2); // -5, 10, 2, 4, 9 var arr3 = [{x:4}, {x:1}, {x:5}]; arr3.sort(function (a,b ) { if (a.x < b.x) return -1; else if (a.x == b.x) return 0; else if (a.x > b.x) return 1; }); alert(arr3[0].x); // 1 alert(arr3[1].x); // 4 alert(arr3[2].x); // 5 |
<массив>.concat(val1, val2, …, valN);
Возвращает новый массив, в котором содержатся элементы исходного массива и элементы/массивы, переданные в качестве аргументов. Не изменяет исходный массив и массивы, переданные в качестве аргументов.
<массив>.join([separator])
Возвращает строку, содержащую элементы массива, разделённые separator. Если аргумент separator не передан, то он считается равным запятой.
<массив>.slice(begin[, end])
Возвращает массив, содержащий элементы исходного массива от begin (включая) до end (исключая). Если end не указывать, то возвращает от begin до конца массива. Индексы begin и end могут быть отрицательными. Тогда они отсчитываются от конца массива.
<массив>.splice(startIndex, deleteCount, el1, el2, … elN)
Изменяет массив. Удаляет deleteCount элементов, начиная с индекса startIndex и вставляет el1, el2… elN элементы в индекс startIndex. Если deleteCount равен нулю, то элементы удаляться не будут. В этом случае нужно указать хотя бы один элемент для добавления.
<массив>.indexOf(searchEl[, startIndex])
Возвращает наименьший индекс элемента, равного searchEl. Параметр startIndex можно опустить. Тогда поиск будет с первого элемента. Возвращает -1, если элемент не удалось найти.
<массив>.lastIndexOf(searchElement[, fromIndex])
Возвращает наибольший индекс элемента, равного searchEl. Если fromIndex не указывать, то поиск идёт с самого конца массива до начала. Если указывать, то начиная с fromIndex до начала массива. Возвращает -1, если элемент не удалось найти.
<массив>.forEach(callback[, thisArg])
Обход массива. Для каждого элемента массива вызывается функция callback, имеющая три параметра: элемент, индекс элемента, массив, по которому идёт обход. При передаче необязательного параметра thisArg он используется в качестве this для функции callback.
<массив>.filter(callback[, thisArg])
Возвращает массив, состоящий только из тех элементов, для которых функция callback вернула true. Функция callback имеет три параметра: элемент, индекс элемента, массив. Параметр thisArg используется в качестве this функции callback.
<массив>.map(callback[, thisArg])
Возвращает массив, элементы которого являются результатом применения callback к исходному элементу. Функция callback имеет три параметра: элемент, индекс элемента, массив. Параметр thisArg используется в качестве this функции callback.
<массив>.reduce(callback[, initialValue])
Возвращает одно значение, которое является результатом последовательного применения функции callback над каждым элементом массива. Функция callback имеет четыре параметра: предыдущее значение (или initialValue, если первый элемент), элемент, индекс, массив. Если initialValue не передавать, то при первом вызове первый параметр примет значение первого элемента массива, а второй параметр — второго элемента.
Ссылки:
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array — Более подробное описание на сайте Mozilla.
Цикл статей «Учебник Javascript».
Следующая статья — «Объекты в Javascript можно использовать в качестве ассоциативных массивов».
Предыдущая статья — «Подмена контекста – call, apply в Javascript».