Основы JavaScript 3. Массивы

Массивы

Создание и использование

Массивы предназначены для хранения коллекций данных, в т.ч. упорядоченных. Синтаксис создания массива:

// создание с помощью литерала
var array1 = []; // пустой массив
var array2 = [1, 2, 3]; // массив с элементами
var array3 = [true, 42, "dog"]; // массив с элементами разного типа

// создание массива в помощью new Array
var array4 = new Array(); // пустой массив
var array5 = new Array(2); // массив длиной 2 элемента
var array6 = new Array(0.5); // Error: Invalid array length
var array7 = new Array("2"); // массив длиной 1 элемент
var array8 = new Array(1, "2", null); // массив с элементами разного типа

Помимо индексов массив имеет специальное свойство length, которое указывает на длину неразреженного массива.

Доступ к элементам массива осуществляется с помощью квадратных скобок:

var days = ["Sunday", "Monday"];
alert(days[0]);
alert(days[1]);
days[2] = "Tuesday"
alert(days[2]);

Массивы в JavaScript так же не имеют строгой типизации, т.е. могут содержать в себе разнородные данные, в том числе и другие массивы. Такие массивы называются многомерными.

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

Методы массивов

toString() преобразует массив в строку
pop() удаляет элемент c конца массива, возвращает удаленный элемент *
push(el1, el2, ...) добавляет элемент(ы) в конец массива *
shift() удаляет элемент c начала массива, возвращает удаленный элемент *
unshift(el1, el2, ...) добавляет элемент(ы) в начало массива *
indexOf(val [, fromIndex]) возвращает индекс элемента со значением val или -1, если элемент не найден. Ищет с начала массива. Если задан fromIndex, то осуществляет поиск, начиная с заданной позиции и до конца массива. Если fromIndex отрицаетльный, то начальный индекс устанавливается с конца
lastIndexOf(val [, fromIndex]) возвращает индекс элемента со значением val или -1, если элемент не найден. Ищет с конца массива. Если задан fromIndex, то осуществляет поиск, начиная с заданной позиции и до начала массива
join([separator]) объединяет элементы массива в строку, в качестве разделителя использует separator или ","
concat(val1 [, val2 [, ...[, valN]]]) возвращает массива, к которому справа добавлены элементы, переданные в качестве аргументов
reverse() меняет порядок следования элементов массива на обратный *
slice([begin [, end]]) возвращает участок массива от элемента с индексом begin (или 0) и до end (или до конца массива)
splice(start [, deleteCount [, val1, val2, ...]]) удаляет, начиная с позиции start, deleteCount элементов (или до конца массива), вставляет на их место элементы valN
sort([callback]) сортирует массив по возрастанию, используя лексикографическое сравнение. Если задана callback, то использует её для определения порядка элементов
forEach(callback(val, [i, [arr]]) {
    // итератор
});
выполняет callback для каждого элемента. Callback принимает аргументами значение текущего элемента, его индекс и ссылку на массив. Замена для for
every(callback(val, [i, [arr]]) {
    // условие
});
возвращает true, если все элементы массива удовлетворяют условию в callback
some(callback(val, [i, [arr]]) {
    // условие
});
возвращает true, если хотя бы один элемент массива удовлетворяет условию в callback
filter(callback(val, [i, [arr]]) {
    // условие
});
возвращает подмассив с элементами, для которых callback вернет true
find(callback(val, [i, [arr]]) {
    // условие
});
возвращает первый элемент, для которго callback вернет true
includes(val [, fromIndex]) возвращает true, если val есть в массиве. Начинает поиск с fromIndex
map(callback(val, [i, [arr]]) {
    // код
});
возвращает массив, в котором для каждого элемента исходного массива была выполнена callback
reduce(callback(result, val) {
    // return result
}[, initVal]);
Выполняет callback для каждого элемента массива, результат накапливает в result. Начальное значение result можно задать в initVal, иначе берется начальный элемент массива
* – метод меняет исходный массив