Приведите примеры мутирующих и немутирующих методов массива Flashcards
Приведите примеры мутирующих и немутирующих методов массива
Добавить: Мутирование
Самый простой способ добавить элемент в массив — array.push() и array.unshift().
// Note: using let
here to indicate that this array will be mutated.
let array = [1, 2, 3, 4, 5];
array.push(6); // [1, 2, 3, 4, 5, 6];
array.unshift(10);// [10, 1, 2, 3, 4, 5, 6];
array.push() добавляет элемент в конец массива, а array.unshift() добавляет элемент в начало массива.
Добавить: Не мутирующие
Есть два способа сделать это array.concat() и оператор разложения …array.
// Note use const
to indicate that this will not be mutated
// concat
const array1 = [1, 2, 3, 4, 5];
const array2 = array.concat(6); // [1, 2, 3, 4, 5, 6];
// spread
const array3 = […array1, 6]; // [1, 2, 3, 4, 5, 6];
const array4 = [10, …array1]; // [10, 1, 2, 3, 4, 5];
array1.concat(item1, item2, …) Метод concat объединит все элементы из массива array1 и элементы, переданные в качестве параметров, и создаст из них новый массив. В то время как оператор … spread по сути извлечет все элементы из массива и поместит их в новый контекст массива.
Удалить: Мутирование
Существует два метода array.pop() и array.shift().
let array = [1, 2, 3, 4, 5];
array.pop(); // [1, 2, 3, 4] > delete from end and return deleted item
array.shift(); // [2, 3, 4] > delete from front and return deleted item
array.pop() удаляет элемент из конца и возвращает удаленный элемент. array.shift() удаляет элемент с начала и возвращает удаленный элемент.
Существует один важный метод работы с массивом — array.splice(). Он изменяет массив. splice() принимает 2 важных параметра, первый из которых — начальный индекс, а второй — количество удаляемых элементов. splice удалит элементы из массива напрямую. например, splice(0, 2) удалит два элемента, начиная с индекса 0.
let array = [1, 2, 3, 4, 5];
array.splice(0, 2); // [3, 4, 5];
Удалить: Не мутирующий
Удаление или любой тип фильтрации выполняется с помощью array.filter(), filter() является одним из самых крутых неизменяющих методов для массива. Это функция, которая вызывается над каждым элементом массива, в процессе чего она должна выполнить некоторую фильтрацию, где если она возвращает true, то элемент будет включен в новый массив, и возвращает false, если элемент должен быть отброшен.
const array1 = [1, 2, 3, 4, 5];
const array2 = array1.filter((item) => item !== 5);
// will filter any item i.e not equal to 5
Еще один очень важный метод — array.slice(). Помните, что это не array.splice(), они разные array.slice() возвращает новый массив, т.е. он не мутирует. По способу использования он очень похож на slice. Он принимает 2 важных параметра, первый — начальный индекс, с которого должно начинаться копирование, второй — конечный индекс, с которого должно заканчиваться копирование, он не является инклюзивным. Он копирует элементы между этими индексами и возвращает их в новый массив.
const array1 = [1, 2, 3, 4, 5];
const array2 = array1.slice(0, 2); // [1,2];
// if no args provided ti will copy the whole array
Заменить: Мутирование
Метод массива splice является очень интересным методом, потому что он может не только удалять элементы, но и добавлять элементы в массив напрямую. Третьи параметры и далее в основном означают элементы, которые нужно вставить в массив.
let array = [1, 2, 3, 4, 5];
array.splice(2, 1, 10, 12); // [1, 2, 10, 12, 4, 5];
splice удалит 1 элемент, начиная с индекса 2, а затем вставит 10 и 12 с той же позиции.
Заменить | Преобразовать: Не мутирующие
Могучий метод array.map() очень полезен, так как он может преобразовывать массив. Метод map принимает функцию, которая вызывается на каждом элементе массива и должна вернуть элемент, который нужно поместить в новый массив.
const array1 = [1, 2, 3, 4, 5];
const array2 = array1.map((item) => {
if (item === 3) {
return 10;
}
return item;
}); // [1, 2, 10, 4, 5];
// Map as transformation
const mutilpliedByTwo = array1.map((item) => item * 2);
// [2, 4, 6, 8, 10];