05. Array Operations

Global Object: Array

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