Выбрать главу

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

a.slice(0,3); // Вернет [1,2,3]

а.slice(3); // Вернет [4,5]

а.slice(1,-1); // Вернет [2,3,4]

a.slice(-3,-2); // Вернет [3]

7.8.6. Метод splice()

Метод Array.splice() - это универсальный метод, выполняющий вставку или удаление элементов массива. В отличие от методов slice() и concat(), метод splice() изменяет исходный массив, относительно которого он был вызван. Обратите внимание, что методы splice() и slice() имеют очень похожие имена, но выполняют совершенно разные операции.

Метод splice() может удалять элементы из массива, вставлять новые элементы или выполнять обе операции одновременно. Элементы массива при необходимости смещаются, чтобы после вставки или удаления образовывалась непрерывная последовательность. Первый аргумент метода splice() определяет позицию в массиве, начиная с которой будет выполняться вставка и/или удаление. Второй аргумент определяет количество элементов, которые должны быть удалены (вырезаны) из массива. Если второй аргумент опущен, удаляются все элементы массива от указанного до конца массива. Метод splice() возвращает массив удаленных элементов или (если ни один из элементов не был удален) пустой массив. Например:

var а = [1,2,3,4,5,6,7,8];

a.splice(4);   // Вернет [5,6,7,8]; а = [1,2,3,4]

a.splice(1,2); // Вернет [2,3]; а = [1,4]

a.splice(1,1); // Вернет [4]; а = [1]

Первые два аргумента метода splice() определяют элементы массива, подлежащие удалению. За этими аргументами может следовать любое количество дополнительных аргументов, определяющих элементы, которые будут вставлены в массив, начиная с позиции, указанной в первом аргументе. Например:

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

a.splice(2,0,'а','b');   // Вернет []; а = [1,2,’а','b',3,4,5]

a.splice(2,2, [1,2], 3); // Вернет ['a','b']; а = [1,2, [1,2],3,3,4,5]

Обратите внимание, что, в отличие от concat(), метод splice() вставляет массивы целиком, а не их элементы.

7.8.7. Методы push() и рор()

Методы push() и рор() позволяют работать с массивами как со стеками. Метод push() добавляет один или несколько новых элементов в конец массива и возвращает его новую длину. Метод pop() выполняет обратную операцию - удаляет последний элемент массива, уменьшает длину массива и возвращает удаленное им значение. Обратите внимание, что оба эти метода изменяют исходный массив, а не создают его модифицированную копию. Комбинация push() и рор() позволяет на основе массива реализовать стек с дисциплиной обслуживания «первым вошел - последним вышел». Например:

var stack = [];  // стек: []

stack.push(1,2): // стек: [1,2] Вернет 2

stack.pop();     // стек: [1] Вернет 2

stack.push(3);   // стек: [1,3] Вернет 2

stack.pop();     // стек: [1] Вернет 3

stack.push([4,5]); // стек: [1,[4,5]] Вернет 2

stack.рор()      // стек: [1] Вернет [4,5]

stack.рор();     // стек: [] Вернет 1

7.8.8. Методы unshift() и shift()

Методы unshift() и shift() ведут себя почти так же, как push() и рор(), за исключением того, что они вставляют и удаляют элементы в начале массива, а не в конце. Метод unshift() смещает существующие элементы в сторону больших индексов для освобождения места, добавляет элемент или элементы в начало массива и возвращает новую длину массива. Метод shift() удаляет и возвращает первый элемент массива, смещая все последующие элементы на одну позицию вниз, чтобы занять место, освободившееся в начале массива. Например: