Методы массивов JavaScript. Как удалить определенный элемент массива JavaScript

Вставляет, удаляет или замещает элементы массива.

Спецификация: ECMAScript 3-е издание. Синтаксис

Array.splice(start, deleteCount, element1, element2, ..., elementN)

Параметры start Индекс элемента массива, с которого будут удалены из массива и/или добавлены в массив элементы. Допускается использование отрицательных значений, в этом случае индекс с которого будет вызван метод будет расчитан по следующей формуле: length (длина массива) + start . deleteCount Необязательное значение. Целое число, определяющее количество удаляемых из массива элементов, начииная с индекса указанного в start . Если deleteCount равен 0 , то элементы не удаляются. Если значение deleteCount больше количества оставшихся элементов в массиве, то будут удалены все элементы до конца массива. Отрицательные значения не допускаются. elementN Необязательное значение. Добавляемые к массиву элементы. Если вы не укажете никакого элемента, splice() просто удалит элементы из массива. Возвращаемое значение

Новый массив, содержащий удаленные элементы (если есть). Если будет удалён только один элемент, вернётся массив из одного элемента. Если никакие элементы не будут удалены, вернётся пустой массив.

Описание

Метод splice() удаляет указанное количество элементов массива, начиная с элемента, позиция которого определяется аргументом start , включая его, и заменяет значениями, перечисленными в списке аргументов (element1, ..., elementN). Элементы массива, расположенные после вставляемых или удаляемых элементов, сдвигаются и образуют непрерывную последовательность с остальной частью массива.

На заметку: В отличие от метода с похожим именем, slice() , метод splice() непосредственно изменяет массив.

Примеры

Метод splice() удаляет 0 элементов по индексу 2 и вставляет "Lemon":

один элемент по индексу 3 :

В следующем примере метод splice() удаляет один элемент по индексу 2 и вставляет "Kiwi".

В JavaScript удалить элемент массива можно несколькими методами. К ним относятся методы pop и shift . Метод pop удаляет первый элемент из заданного массива. Метод shift удаляет последний элемент из заданного массива.

Можно задать длину массива 0, если требуется удалить все элементы из данного массива. Но что, вам нужно удалить определенный элемент?

Например:

Array_name.splice (index);

Array_name.delete

Можно использовать метод splice . Он возвращает новый массив удаленных элементов. А первоначальный массив содержит оставшиеся элементы.

Посмотрите приведенную ниже демо-версию, чтобы узнать, как использовать метод JavaScript splice и другие способы удаления определенных элементов.

Демонстрация удаления конкретного элемента с использованием метода splice

В этой демо-версии создается массив чисел. Первоначально в массив добавляются пять элементов. После этого используется метод splice для удаления третьего элемента. Таким же образом в JavaScript можно удалить первый элемент массива.

Элементы числового массива отображаются до и после использования метода JavaScript splice следующим образом:

Код JavaScript с методом splice :


"; for (i=0; i < Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "
"; } document.getElementById("p1").innerHTML = the_arr_before_after; Arrretrun = Arr_Numbers.splice(2,1); var the_arr_before_after = "Array elements after splice method:
"; for (i=0; i < Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "

Вы заметили, что я использовал для JavaScript удаления элемента массива два параметра. Первый указывает индекс элемента, который нужно удалить. Второй – сколько элементов нужно удалить после указанного ключа.

В следующей демо-версии показан случай, когда мы используем второй параметр.

Что делать, если второй параметр не указан в JavaScript-методе splice?

Использование того же кода, но без второго параметра в методе splice :

Arr_Numbers.splice(2);

Код и результат:

Посмотреть онлайн демо-версию и код

Как видите, здесь были удалены и все элементы перед указанным номером индекса. Кроме этого метод splice возвращает массив удаленных элементов.

Код JavaScript :

var Arr_Numbers = ; var i; var the_arr_before_after = "The original array:
"; for (i=0; i < Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "
"; } document.getElementById("p1").innerHTML = the_arr_before_after; Arrretrun = Arr_Numbers.splice(2); var the_arr_before_after = "Array elements after splice method:
"; for (i=0; i < Arr_Numbers.length; i++){ the_arr_before_after += Arr_Numbers[i] + "
"; } document.getElementById("p2").innerHTML = the_arr_before_after; //Удаленные элементы массива в возвращаемом массиве var the_arr_before_after = "The removed array elements:
"; for (i=0; i < Arrretrun.length; i++){ the_arr_before_after += Arrretrun[i] + "
"; } document.getElementById("p3").innerHTML = the_arr_before_after;

Использование функции delete для удаления элемента массива

Также, чтобы в JavaScript удалить элемент массива, можно использовать функцию delete . Но она сохраняет пустое место, и если вы вернете этот массив после использования функции, то удаленный элемент будет отображен как undefined .

Рассмотрим демо-версию, в которой используется функция delete :

Посмотреть онлайн демо-версию и код

Код JavaScript :

var Arr_Strings = ["The","JavaScript","Array","Totorial"]; var i; var the_arr_before_after = "The original string array elements:

"; for (i=0; i < Arr_Strings.length; i++){ the_arr_before_after += Arr_Strings[i] + "
"; } document.getElementById("p1").innerHTML = the_arr_before_after; //Использование функции delete delete Arr_Strings; var the_arr_before_after = "Array elements after splice method:

"; for (i=0; i < Arr_Strings.length; i++){ the_arr_before_after += Arr_Strings[i] + "
"; } document.getElementById("p2").innerHTML = the_arr_before_after;

Вы видите, что для третьего элемента отображается undefined после его удаления с помощью функции delete .

Определение и применение

JavaScript метод splice() позволяет изменить содержимое массива за счёт удаления существующих элементов, и/или добавления новых элементов в массив.

Обращаю Ваше внимание, что метод splice() изменяет существующий массив, а не возвращает новый. Удаленные элементы возвращаются как новый объект Array .

Поддержка браузерами Метод
Opera
IExplorer
Edge
splice() Да Да Да Да Да Да
JavaScript синтаксис: // только с указанием индекса array .splice(start ) // с указанием индекса и количества удаляемых элементов array .splice(start , deleteCount ) // с указанием индекса, количества удаляемых элементов и с добавлением элементов array .splice(start , deleteCount , element1 , element2 , ..., elementX ) Версия JavaScript ECMAScript 3 (реализовано в JavaScript 1.2) Значения параметров Параметр Описание
start Целое число, определяющее индекс массива, с которого будут удалены из массива и/или добавлены в массив элементы. Допускается использование отрицательных значений , в этом случае индекс с которого будет вызван метод будет расчитан по следующей формуле: length (длина массива) + start . Является обязательным значением.
deleteCount Целое число, определяющее количество удаляемых из массива элементов, начииная с индекса указанного в start . Если deleteCount равен 0, то элементы не удаляются. Если значение deleteCount больше количества оставшихся элементов в массиве, то все оставшиеся элементы массива будут удалены. Необязательное значение, отрицательные значения не допускаются .
element (-s) Элемент, или элементы, которые будут добавлены к массиву. Индекс массива по которому будут вставлены новые элементы соответствует параметру start . Необязательное значение .
Пример использования var x = ; // инициализируем переменную, содержащую массив x.splice(3 ); x.splice(-3 ); // значение переменной x.splice(2 , 2 ); // значение переменной x.splice(-2 , 2 ); // значение переменной x.splice(0 , 2 , "z ", true ); // значение переменной ["z", true, 3, "a", "b", "c"] x.splice(3 , 0 , "z ", "z ", "z "); // значение переменной

The splice() method changes the contents of an array by removing or replacing existing elements and/or adding new elements in place .

The source for this interactive example is stored in a GitHub repository. If you"d like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

Syntax let arrDeletedItems = array .splice(start [, deleteCount [, item1 [, item2 [, ...]]]]) Parameters start The index at which to start changing the array. If greater than the length of the array, start will be set to the length of the array. If negative, it will begin that many elements from the end of the array. (In this case, the origin -1 , meaning - n is the index of the n th last element, and is therefore equivalent to the index of array .length - n .) If array .length + start is less than 0 , it will begin from index 0 . deleteCount Optional An integer indicating the number of elements in the array to remove from start . If deleteCount is omitted, or if its value is equal to or larger than array .length - start (that is, if it is equal to or greater than the number of elements left in the array, starting at start), then all the elements from start to the end of the array will be deleted.

Note: In IE8, it won"t delete all when deleteCount is omitted.

If deleteCount is 0 or negative, no elements are removed. In this case, you should specify at least one new element (see below). item1 , item2 , ... Optional The elements to add to the array, beginning from start . If you do not specify any elements, splice() will only remove elements from the array.

Return value

An array containing the deleted elements.

If only one element is removed, an array of one element is returned.

If no elements are removed, an empty array is returned.

Description

If the specified number of elements to insert differs from the number of elements being removed, the array"s length will be different at the end of the call.

Examples Remove 0 (zero) elements from index 2, and insert "drum" let myFish = ["angel", "clown", "mandarin", "sturgeon"] let removed = myFish.splice(2, 0, "drum") // myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"] // removed is , no elements removed Remove 0 (zero) elements from index 2, and insert "drum" and "guitar" let myFish = ["angel", "clown", "mandarin", "sturgeon"] let removed = myFish.splice(2, 0, "drum", "guitar") // myFish is ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"] // removed is , no elements removed Remove 1 element from index 3 let myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"] let removed = myFish.splice(3, 1) // removed is ["mandarin"] // myFish is ["angel", "clown", "drum", "sturgeon"] Remove 1 element from index 2, and insert "trumpet" let myFish = ["angel", "clown", "drum", "sturgeon"] let removed = myFish.splice(2, 1, "trumpet") // myFish is ["angel", "clown", "trumpet", "sturgeon"] // removed is ["drum"] Remove 2 elements from index 0, and insert "parrot", "anemone" and "blue" let myFish = ["angel", "clown", "trumpet", "sturgeon"] let removed = myFish.splice(0, 2, "parrot", "anemone", "blue") // myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"] // removed is ["angel", "clown"] Remove 2 elements from index 2 let myFish = ["parrot", "anemone", "blue", "trumpet", "sturgeon"] let removed = myFish.splice(2, 2) // myFish is ["parrot", "anemone", "sturgeon"] // removed is ["blue", "trumpet"] Remove 1 element from index -2 let myFish = ["angel", "clown", "mandarin", "sturgeon"] let removed = myFish.splice(-2, 1) // myFish is ["angel", "clown", "sturgeon"] // removed is ["mandarin"] Remove all elements after index 2 (incl.) let myFish = ["angel", "clown", "mandarin", "sturgeon"] let removed = myFish.splice(2) // myFish is ["angel", "clown"] // removed is ["mandarin", "sturgeon"] Specifications Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of "Array.prototype.splice" in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
The definition of "Array.prototype.splice" in that specification.
Standard
ECMAScript 3rd Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.2.
Browser compatibility

The compatibility table in this page is generated from structured data. If you"d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Desktop Mobile Server Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js splice
Chrome Full support 1 Edge Full support 12 Firefox Full support 1 IE Full support 5.5

Notes

Full support 5.5

Notes

Notes From Internet Explorer 5.5 through 8, all elements of the array will not be deleted if deleteCount is omitted. This behavior was fixed in Internet Explorer 9.
Opera Full support Yes Safari Full support 1 WebView Android Full support Yes Chrome Android Full support 18 Firefox Android Full support 4 Opera Android Full support Yes Safari iOS Full support 1 Samsung Internet Android Full support Yes nodejs Full support Yes
Legend Full support Full support See implementation notes. See implementation notes.

Всю пользу встроенных методов JavaScript можно оценить только правильно понимая, как они работают. В этой статье мы разберем три метода: slice () , splice () и split () . Даже опытные разработчики часто их путают: возможно из-за того, что все три названия так похожи.

Студентам и начинающим разработчикам: внимательно прочитайте эту статью-об этих трех методах вас могут спросить на собеседовании.

В конце вы найдете конспект информации о всех трех методах. Давайте начнем.

Массивы в JavaScript

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

Чтобы работать с такими массивами, нам понадобятся JavaScript-методы: например, slice () & splice () . Создать массив можно так:

Let arrayDefinition = ; // Array declaration in JS

Теперь создадим другой массив с данными разного типа:

Let array = ;

В JavaScript можно создавать массивы с разными типами данных: с числами, строками и логическими значениями.

Slice ()

Метод slice () копирует заданную часть массива и возвращает эту скопированную часть в виде нового массива. Исходный массив при этом не изменяется .

Array.slice(from, until);

  • From: Нарезает массив начиная с этого элемента
  • Until: Нарезает массив до этого элемента

Например, я хочу нарезать первые три элемента из упомянутого выше массива. Первый элемент массива всегда обозначается как 0, поэтому в качестве параметра from я указывают 0.

Array --> 1 // included array --> 2 // included array --> 3 // included array --> "hello world" // not included

Здесь можно запутаться! Вот почему я объявил “until” .

Let newArray = array.slice(0, 3); // Return value is also an array

Наконец я создаю новый массив и связываю его с переменной newArray . Посмотрим результат:

Нарезка массива и добавление элементов в новый массив


Переменная newArray становится новым массивом, оригинальный массив остается без изменений.

Важное примечание: метод Slice() можно использовать и в строках.

Splice ()

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

Удаление элементов

Чтобы удалить элементы, введите элемент, с которого нужно начать (index) и количество элементов, которые нужно удалить (number of elements) :

Array.splice(index, number of elements);

Параметр Index  - это начальная точка удаления элементов. Элементы с порядковым номером меньше заданного параметра Index не будут удалены:

Array.splice(2); // Every element starting from index 2, will be removed

Если не указать второй параметр, все элементы от заданного параметра Index и до конца будут удалены:

В качестве еще одно примера, я указал 1 в качестве второго параметра: таким образом, каждый раз при повторе метода splice () будет удалять по одному элементу, начиная со второго:

Array.splice(2, 1);

Массив до метода splice ()

Splice () применен один раз:

Элемент 3 удален: следовательно, теперь элемент “hello world” имеет порядковый номер 2

Splice () применен два раза:

На этот раз, был удален элемент “hello world”, потому что его порядковый номер 2

Так можно продолжать до тех пор, пока не останется элементов с порядковым номером 2.

Добавление элементов

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

Array.splice(index, number of elements, element, element);

В качестве примера, добавим элементы a и b в самое начало массива:

Array.splice(0, 0, "a", "b");


Элементы a и b добавлены в начало массива

Split ()

Методы Slice() и splice() используются для массивов. Метод split() используется для строк . Он разделяет строку на подстроки и возвращает их в виде массива. У этого метода 2 параметра, и оба из них не обязательно указывать .

String.split(separator, limit);

  • Separator: определяет, как строка будет поделена на подстроки: запятой, знаком и т.д.
  • Limit: ограничивает количество подстрок заданным числом

Метод split() не работает напрямую с массивами . Тем не менее, сначала можно преобразовать элементы массива в строки и уже после применить метод split() .

Давайте посмотрим, как это работает.

Сначала преобразуем массив в строку с помощью метода toString() :

Let myString = array.toString();

Затем разделим строку myString запятыми и ограничим количество подстрок до трех. Затем преобразуем строки в массив:

Let newArray = myString.split(",", 3);

В виде массива вернулись первые 3 элемента

Таким образом, элементы массива myString разделены запятыми. Мы поставили ограничение в 3 подстроки, поэтому в качестве массива вернулись первые 3 элемента.

Примечание: Используя команду array.split(""); можно все символы в строке разделить на подстроки.


Все символы разделены на подстроки

Конспект: Slice ()
  • Копирует элементы из массива
  • Возвращает их в новый массив
  • Не меняет оригинальный массив
  • Нарезает массив с помощью параметров from и until: array.slice (from, until)
  • Не включает параметр, заданный в “until”
  • Используется и в массивах, и в строках
Splice ()
  • Добавляет и удаляет элементы из массива
  • Возвращает массив удаленных элементов
  • Меняет массив
  • Добавление элементов: array.splice (index, number of elements, element)
  • Удаление элементов: array.splice (index, number of elements)
  • Используется только в массивах
Split ()
  • Делит строки на подстроки
  • Возвращает их в виде массива
  • 2 параметра, и оба из них не обязательно указывать: string.split(separator, limit)
  • Не меняет оригинальную строку
  • Используется только в строках

В JavaScript есть еще много других встроенных методов работы с массивами и строками. Если вы научитесь их использовать, программировать станет намного проще.


Top