Методы массивов
Добавление/удаление элементов
- arr.push(...items) – добавляет элементы в конец,
- arr.pop() – извлекает элемент из конца,
- arr.shift() – извлекает элемент из начала,
- arr.unshift(...items) – добавляет элементы в начало.
splice
Это универсальный «швейцарский нож» для работы с массивами. Умеет всё: добавлять, удалять и заменять элементы. Синтаксис:
arr.splice(start[, deleteCount, elem1, ..., elemN
])
Он изменяет arr начиная с индекса start: удаляет deleteCount элементов и затем вставляет elem1, ..., elemN на их место. Возвращает массив из удалённых элементов. 💥 Отрицательные индексы разрешены
slice
Возвращает новый массив, в который копирует все элементы с индекса start до end (не включая end). start и end могут быть отрицательными, в этом случае отсчёт позиции будет вестись с конца массива.
arr.slice([start], [end])
Это похоже на строковый метод str.slice, но вместо подстрок возвращает подмассивы.
concat
Метод arr.concat создаёт новый массив, в который копирует данные из других массивов и дополнительные значения.
let arr = [1, 2];
// создать массив из: arr и [3,4]
alert(arr.concat([3, 4])); // 1,2,3,4
Перебор: forEach
Метод arr.forEach позволяет запускать функцию для каждого элемента массива.
arr.forEach(function (item, index, array) {
// ... делать что-то с item
});
Поиск в массиве
indexOf/lastIndexOf и includes
- arr.indexOf(item, from) ищет item начиная с индекса from и возвращает номер индекса, на котором был найден искомый элемент, в противном случае -1.
- arr.includes(item, from) ищет item начиная с индекса from и возвращает true, если поиск успешен.
💥 Метод includes правильно обрабатывает NaN, в отличие от indexOf
find и findIndex/findLastIndex
Функция вызывается по очереди для каждого элемента массива:
- item – очередной элемент.
- index – его индекс.
- array – сам массив.
Если функция возвращает true, поиск прерывается и возвращается item. Если ничего не найдено, возвращается
undefined.
let result = arr.find(function (item, index, array) {
// если true - возвращается текущий элемент и перебор прерывается
// если все итерации оказались ложными, возвращается undefined
});
У метода arr.findIndex такой же синтаксис, но он возвращает индекс, на котором был найден элемент, а не сам элемент. Значение -1 возвращается, если ничего не найдено. Метод arr.findLastIndex похож на findIndex, но ищет справа налево, наподобие lastIndexOf.
filter
Если найденных элементов может быть много, можно использовать arr.filter(fn). Синтаксис схож с find, но filter возвращает массив из всех подходящих элементов:
let results = arr.filter(function (item, index, array) {
// если `true` -- элемент добавляется к results и перебор продолжается
// возвращается пустой массив в случае, если ничего не найдено
});
Преобразование массива
map
Он вызывает функцию для каждого элемента массива и возвращает массив результатов выполнения этой функции.
let result = arr.map(function (item, index, array) {
// возвращается новое значение вместо элемента
});
sort(fn)
Вызов arr.sort() сортирует массив на месте, меняя в нём порядок элементов. Он также возвращает отсортированный массив, но обычно возвращаемое значение игнорируется, так как изменяется сам arr.
По умолчанию элементы сортируются как строки. Чтобы использовать наш собственный порядок сортировки, нам нужно предоставить функцию в качестве аргумента arr.sort()
function compare(a, b) {
if (a > b) return 1; // если первое значение больше второго
if (a == b) return 0; // если равны
if (a < b) return -1; // если первое значение меньше второго
}
💥 Функция сравнения может вернуть любое число Лучше использовать стрелочные функции
arr.sort( (a, b) => a - b );
Используйте localeCompare для строк
reverse
Метод arr.reverse меняет порядок элементов в arr на обратный и возвращает новый массив.
split и join
str.split(delim) - разбивает строку на массив по заданному разделителю delim. arr.join(glue) - создаёт строку из элементов arr, вставляя glue между ними.
reduce/reduceRight
Функция применяется по очереди ко всем элементам массива и «переносит» свой результат на следующий вызов. Аргументы:
- accumulator – результат предыдущего вызова этой функции, равен initial при первом вызове (если передан initial),
- item – очередной элемент массива,
- index – его позиция,
- array – сам массив.
let arr = [1, 2, 3, 4, 5];
let result = arr.reduce((sum, current) => sum + current, 0);
alert( result ); // 15
Array.isArray
Массивы не образуют отдельный тип данных, так как основаны на объектах, поэтому typeof не может отличить простой объект от массива.
Большинство методов поддерживают «thisArg»
Все методы за исключением sort(fn) Значение параметра thisArg становится this для func.
Другие функции
- arr.some(fn)/arr.every(fn) проверяет массив.
- arr.fill(value, start, end) – заполняет массив повторяющимися value, начиная с индекса start до end.
- arr.copyWithin(target, start, end) – копирует свои элементы, начиная с позиции start и заканчивая end, в себя, на позицию target (перезаписывая существующие).
- arr.flat(depth)/arr.flatMap(fn) создаёт новый плоский массив из многомерного массива.
🚀 Источник: https://learn.javascript.ru/array-methods