05. Array Operations
Insert or delete elements in array
Оператор delete
удаляет элемент массива оставляя в нем дыру и не изменяя значение legnth
.
const arr = ["a", "b"];
// arr.length = 2
delete arr[1]; // does not update length true
// arr = [ 'a', ]
// arr.length = 2
Для удаления элемента массива без создания дыры следует использовать метод splice
:
> const arr = ['a', 'b', 'c', 'd'];
> arr.splice(1, 2) // returns what has been removed [ 'b', 'c' ]
> arr
[ 'a', 'd' ]
Array as stack
Метод pop()
удаляет последний элемент массива и возвращает его. Вызов на пустом массиве вернет undefined
.
const myArray = ["1", "2", "3"];
const last = myArray.pop(); // => ["1", "2"], last = "3"
Метод push()
добавляет элемент в конец массива. Может принимать сразу несколько элементов.
const myArray = ["1", "2"];
myArray.push("3"); // => ["1", "2", "3"]
// use push + spread to concat two arrays
const vegetables = ["parsnip", "potato"];
const moreVegs = ["celery", "beetroot"];
vegetables.push(...moreVegs);
Array as queue
Метод shift()
удаляет первый элемент из массива и возвращает его. В отличие от оператора delete
, метод shift()
сдвигает все элементы вниз на позицию ниже их текущих индексов. Позволяет использовать массив как очередь.
const myArray = ["1", "2", "3"];
const first = myArray.shift();
Метод unshift()
вставляет элемент в начало массива, при этом существующие элементы в массиве смещаются в позиции с более высокими индексами:
const myArray = new Array("1", "2", "3");
myArray.unshift("4", "5");
// myArray becomes ["4", "5", "1", "2", "3"]
Так же добавить элемент в конец массива можно также, присвоив значение элементу a[a.length]
. Удалять элементы массива можно с помощью оператора delete
, как обычные свойства объектов, но при этом значение length
не уменьшается, а элементы массива не сдвигаются.
Getting sub-array
Метод slice
в форме arr.slice([begin[, end]])
выполняет поверхностное копирование части исходного массива в новый.
Возвращает новый массив
Используется для поверхностного копирования всего массива когда вызван без параметров.
Если
begin
пропущено, то его значением считается0
.Отрицательное значение
end
означает индексацию с конца массива. Еслиend
опущено, то его значением считаетсяarr.length
.
Метод splice
в форме array.splice(start, deleteCount[, item1[, item2[, ...]]])
удаляет deleteCount
элементов с позиции start
, опционально замещая их переданными элементами.
Метод
splice()
изменяет исходный массив, относительно которого он был вызван.start
-- принимает значения от нуля доarr.length
. Отрицательные значения допускаются.deleteCount
может быть ноль.
const fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
const citrus = fruits.slice(1, 3);
const shallowCopy = fruits.slice(); // this is how to make a copy
const myFish = ["angel", "clown", "mandarin", "surgeon"];
const removed = myFish.splice(2, 0, "drum");
// myFish is ['angel', 'clown', 'drum', 'mandarin', 'surgeon']
removed = myFish.splice(3, 1);
// myFish is ['angel', 'clown', 'drum', 'surgeon']
Last updated
Was this helpful?