Array methods Flashcards

1
Q

Not safety ways to copy array

A

Значения копируются по ссылке, а не по значению, поэтому копирование не безопасное, если массив содержит объекты.

  1. С помощью spread:
    numbers = [1, 2, 3];
    numbersCopy = […numbers];

numbers = [1, 2, 3];
numbersCopy = [];

  1. С помощью циклов:
    for (i = 0; i < numbers.length; i++) {
    numbersCopy[i] = numbers[i];
    }

или

while (++i < numbers.length) {
numbersCopy[i] = numbers[i];
}

  1. numbersCopy = numbers.map((x) => x);
  2. numbersCopy = numbers.filter(() => true);
  3. numbersCopy = numbers.reduce((newArray, element) => {
    newArray.push(element);

return newArray;
}, []);

  1. numbersCopy = numbers.slice();
  2. numbersCopy = numbers.concat();
  3. numbersCopy = Array.from(numbers);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Safety way to copy array

A

JSON.parse and JSON.stringify (Deep copy)

JSON.stringify превращает объект в строку.
JSON.parse превращает строку в объект.

Их объединение может превратить объект в строку, а затем обратить процесс вспять, чтобы создать совершенно новую структуру данных.

nestedNumbers = [[1], [2]];
numbersCopy = JSON.parse(JSON.stringify(nestedNumbers));

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Array.prototype.slice()

A

arr.slice([begin[, end]])
извлекает элементы с индексом меньше end.

Возвращает новый массив, содержащий копию части исходного массива.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Array.prototype.splice() (mutating)

A

array.splice(start[, deleteCount[, item1[, item2[, …]]]])
deleteCount (необязательный)
Количество удаляемых из массива элементов
itemN (необязательный)
Добавляемые к массиву элементы. Если отсутствуют, то splice() просто удалит элементы из массива.

Изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Array.prototype.filter()

A

filter((element, index, array) => { … } )

Создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Array.prototype.fill() (mutating)

A

arr.fill(value[, start = 0[, end = this.length]])

Заполняет все элементы массива от начального до конечного индексов одним значением (value).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Flatten array

A

var newArray = arr.flat(depth);

depth (необязательный)
На сколько уровней вложенности уменьшается мерность исходного массива. По умолчанию 1.

Неизвестная глубина:
arr.flat(Infinity);

Метод flat удаляет пустые слоты из массива.

Развертывание многомерного массива через цикл:
function func(arr) {
let res = [];
for (let el of arr) {
if (typeof el === ‘object’) {
res = res.concat(func(el));
} else {
res.push(el)
}
}
return res;
}

Для развёртывания многомерных массивов используем рекурсию, reduce и concat.
Пример:
const arr = [1, 2, [3, 4, [5, 6]]];

function flatDeep(arr, d = 1) {
return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), [])
: arr.slice();
};

flatDeep(arr, Infinity);
// [1, 2, 3, 4, 5, 6]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Array.prototype.forEach()

A

Выполняет указанную функцию один раз для каждого элемента в массиве.

arr.forEach(function callback(currentValue, index, array) {
//your iterator
}[, thisArg]);
thisArg (необязательный)
Значение, используемое в качестве this при вызове функции callback.

Возвращает undefined.

CB не будет вызвана для удалённых или пропущенных элементов массива. Однако, она будет вызвана для элементов, которые присутствуют в массиве и имеют значение undefined.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Array.prototype.map()

A

Создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.

const new_array = arr.map(function callback( currentValue[, index[, array]]) {
// Возвращает элемент для new_array
}[, thisArg])
thisArg (необязательный)
Значение, используемое в качестве this при вызове функции callback.

Возвращает новый массив с результатами применения CB к каждому элементу старого массива.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Array.prototype.push() (mutating)

A

Добавляет один или более элементов в конец массива и возвращает новую длину массива.

arr.push(element1, …, elementN)

Возвращает новое значение свойства length объекта, для которого был вызван данный метод.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Array.prototype.pop() (mutating)

A

Удаляет последний элемент из массива и возвращает его значение.

arr.pop()

Возвращает последний элемент массива или undefined, если массив пуст.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Array.prototype.sort() (mutating)

A

На месте сортирует элементы массива и возвращает отсортированный массив.

arr.sort([compareFunction])

compareFunction - необязательный. Указывает функцию, определяющую порядок сортировки. Если опущен, сортируется в соответствии со значениями кодовых точек каждого символа Unicode, полученных путём преобразования каждого элемента в строку.

Возвращает отсортированный тот же самый массив (не копию!).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Array.prototype.reverse() (mutating)

A

На месте обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым.

array.reverse()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Array.prototype.shift() (mutating)

A

Удаляет первый элемент из массива. Этот метод изменяет длину массива.

arr.shift()

Возвращает значение удаленного элемента.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Array.prototype.unshift() (mutating)

A

Добавляет один или более элементов в начало массива и возвращает новую длину массива.

arr.unshift(element1[, …[, elementN]])

Возвращает новое свойство length объекта, над которым был вызван метод unshift.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Array.prototype.some()

A

Проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции.

Возвращает false при любом условии для пустого массива.

arr.some(callback(element[, index[, array]])[, thisArg])

callback - функция проверки каждого элемента, принимает три аргумента:
element - текущий обрабатываемый элемент массива.
Необязательные:
index - индекс текущего обрабатываемого элемента массива.
array - массив, по которому осуществляется проход.
thisArg - значение, используемое в качестве this при выполнении функции callback.

Возвращает true, если функция проверки возвращает truthy значение хотя бы для одного элемента. Иначе, false.

17
Q

Array.prototype.every()

A

Проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.

arr.every(callback(currentValue[, index[, array]])[, thisArg])

Те же аргументы, что у some().

Возвращает true если функция проверки возвращает truthy значение для каждого элемента массива. Иначе, false.