Методы pop/push, shift/unshift

Одно из применений массива – это очередь. В классическом программировании так называют упорядоченную коллекцию элементов, такую что элементы добавляются в конец, а обрабатываются – с начала. В реальной жизни эта структура данных встречается очень часто. Например, очередь сообщений, которые надо показать на экране.

Очень близка к очереди еще одна структура данных: стек. Это такая коллекция элементов, в которой новые элементы добавляются в конец и берутся с конца.

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

pop()

Удаляет последний элемент из массива и возвращает его:

var fruits = ["Яблоко", "Апельсин", "Груша"];

fruits.pop(); // "Груша"

fruits; // Яблоко, Апельсин

push()

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

var fruits = ["Яблоко", "Апельсин"];

fruits.push("Груша");

fruits; // Яблоко, Апельсин, Груша

shift()

Удаляет из массива первый элемент и возвращает его:

var fruits = ["Яблоко", "Апельсин", "Груша"];

fruits.shift(); //Яблоко

fruits; // Апельсин, Груша

unshift()

Добавляет элемент в начало массива:

var fruits = ["Апельсин", "Груша"];

fruits.unshift('Яблоко');

fruits; // Яблоко, Апельсин, Груша

split(separator)

- позволяет превратить строку в массив, разбив ее по разделителю separator.

var names = 'Маша, Петя, Марина, Василий';

var arr = names.split(', ');

У метода split есть необязательный второй аргумент – ограничение на количество элементов в массиве:

"a,b,c,d".split(',', 2); // a,b

Вызов split с пустой строкой разобьёт по буквам:

"тест".split(''); // т,е,с,т

join( [separator = ','] )

— вовзращает строку, состоящую из элементов массива, объединённых используя separator (по умолчанию `','`).

var array = ['a', 'b', 'c'];

array.join(); // 'a,b,c'

array.join( '' ); // 'abc'

delete

var arr = ["Я", "иду", "домой"];

delete arr[1]; // ["Я", undefined, "домой"];

Оператор delete не удаляет элемент, только значение.

splice( index , howMany[, element1[, ...[, elementN]]] )

— изменяет массив, добавляя и/или удаляя элементы. Перестраивает индексы.

index — позиция, с которой выполнять изменения. Если отрицательный, то отсчитывает от конца.

howMany — сколько последующих символов удалить (может быть нулём).

element1, …, elementN — добавляемые после позиции элементы (могут быть упущены).

Возвращает массив удалённых элементов (если ни один не удалён — то пустой массив).

var array = ['a', 'b', 'c', 'd', 'e', 'f'];

array.splice( 2, 2 ); // ['c', 'd']

array; // [ 'a', 'b', 'e', 'f' ]

array.splice( 2, 0, 'c', 'd' ); // []

array; // [ 'a', 'b', 'c', 'd', 'e', 'f' ]

slice( begin, end )

— возвращает копию участка массива от begin (включая) до end (не включая), или до конца массива, если end не указан. Отрицательные индексы отсчитываются от конца. Исходный массив при этом не меняется.

var array = ['a', 'b', 'c', 'd', 'e', 'f'];

array.slice( 2, -1 ); // [ 'c', 'd', 'e' ]

array; // [ 'a', 'b', 'c', 'd', 'e', 'f' ]

sort( [compareFunction] )

— выполнить сортировку элементов массива.

compareFunction( a, b ) — функция сортировки, если не задана, то сортирует значения как строки (не как числа).

[1, 2, 11].sort(); // [ 1, 11, 2 ]

[1, 2, 11].sort( function( a, b ) { return a - b; } ); // [ 1, 2, 11 ]

reverse()

— изменяет массив, переворачивая порядок элементов. Возвращает новое значение массива.

var array = ['a', 'b', 'c'];

array.reverse(); // [ 'c', 'b', 'a' ]

array; // [ 'c', 'b', 'a' ]

concat( value1, value2, ..., valueN )

— возвращает новый массив, состоящий из оригинального массива с добавлением перечисленных элементов.

value может быть значением или массивом. Если массив, то добавляются значения этого массива.

var arr = [1, 2];

arr.concat(3, 4); // 1,2,3,4

var arr = [1, 2];

arr.concat([3, 4], 5); // 1,2,3,4,5

indexOf( searchElement[, fromIndex = 0] )

— индекс первого вхождения элемента searchElement в массиве, начиная с позиции fromIndex, если задана. Если элемента нет, возвращается -1. Производится строгое сравнение (===).

var arr = [1, 0, false];

arr.indexOf(0); // 1

arr.indexOf(false); // 2

arr.indexOf(null); // -1

lastIndexOf( searchElement[, fromIndex = .length] )

— индекс последнего вхождения элемента searchElement в массиве, начиная с позиции fromIndex, если задана. Если элемента нет, возвращается -1. Производится строгое сравнение (===).

Перебирающие методы

forEach( callback[, thisArg] )

— используется для перебора массива. Он для каждого элемента массива вызывает функцию callback. Ничего не возвращает. thisArg повзоляет указать контекст вызова.

Функция может принимать аргументы:

* value — текущий элемент массива

* index — индекс текущего элемента

* array — сам массив

map( callback[, thisArg] )

— создаёт новый массив, состоящий из результата вызова функции callback на элементах оригинального массива.

filter( callback[, thisArg] )

— создаёт новый массив из элементов, прошедших проверку функцией callback (если функция для них вернула true).

every( callback[, thisArg] )

— проверить, что каждый элемент массива соответствует проверке, выполняемой функцией callback. Если на одном из значений функция вернёт значение, соответствующее false, то метод прекратит работу и вернут false, если же все элементы пройдут проверку, то вернётся true.

some( callback[, thisArg] )

— проверить, что хотя бы один элемент массива соответствует проверке, выполняемой функцией callback. Если на одном из значений функция вернёт значение true, то метод прекратит работу и вернут true, если же ни один элемент не пройдёт проверку, то вернётся false.

reduce( callback[, initialValue] )

— свести массив к скалярной величине используя функцию callback. С помощью initialValue можно указать изначальное значение. Если initialValue не указано, то оно равно первому элементу массива, а перебор начинается со второго.

Аргументы функции callback(previousValue, currentItem, index, arr):

· previousValue – последний результат вызова функции, он же «промежуточный результат».

· currentItem – текущий элемент массива, элементы перебираются по очереди слева-направо.

· index – номер текущего элемента.

· arr – обрабатываемый массив.

Например, мы хотим получить сумму всех элементов массива:

var arr = [1, 2, 3, 4, 5];

arr.reduce(function(sum, current) {return sum + current;}, 0); // 15

reduceRight( callback[, initialValue] )

— порядок справа на лево.

Наши рекомендации