Шпаргалка по методам Array

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

Методы массивов делятся на мутирующие и немутирующие. Мутирующие изменяют содержимое массива (добавляют, удаляют, переставляют элементы). Немутирующие — не делают этого. Почти все методы немутирующие. Если метод мутирующий, об этом будет указано символом 😈.

Трансформация массива

ТОП1 метод массива — метод map. Он принимает функцию, которая описвает, как нужно преобразовать каждый элемент массива, возвращает новый массив с этими преобразованными значениями.

const fruits = ["apple", "orange", "kiwi", "apple", "mango"]; const lengths = fruits.map(fruit => fruit.length); // [5, 6, 4, 5, 5]

Поиск элементов

Целых 10 методов отвечают за поиск элемента в массиве в том или ином виде. При этом искать элементы в массиве можно двумя способами: по значению или по какому-то свойству.

Поиск по значению

Допустим, у меня массив строк ["apple", "orange", "kiwi"]. Если я хочу проверить, что в нем есть определенный фрукт, то я могу искать его по значению, передавая конкретную строку, которую хочу проверить. Например, "orange" в массиве есть, а "lime" в массиве нет.

  • includes проверяет, есть ли в массиве такое значение
  • indexOf находит индекс первого такого элемента
  • lastIndexOf находит индекс последнего такого элемента
const fruits = ["apple", "orange", "kiwi", "apple", "mango"]; console.log(fruits.includes("apple")); // true console.log(fruits.includes("lime")); // false console.log(fruits.indexOf("apple")); // 0 console.log(fruits.indexOf("lime")); // -1 console.log(fruits.lastIndexOf("apple")); // 3 console.log(fruits.lastIndexOf("lime")); // -1

Поиск по предикату

Допустим, у меня тот же массив строк, но я хочу проверять некое свойство. Функция, принимающая значение и возвращающая boolean, называется предикат. Предикат — это такая проверка, что значение удовлетворяет некоторму свойству.

const startsWithA = str => str.startsWith("a"); const isShortWord = str => str.length <= 4; const isAdult = person => person.age >= 18; const isDigit = num => [0,1,2,3,4,5,6,7,8,9].includes(num);

В джаваскрипте семь методов, принимающих предикат и возвращающих элементы, индексы или информацию о наличии элементов.

  • filter находит все элементы, удовлетворяющие свойству
  • find находит первый элемент, удовлетворяющий свойству
  • findLast находит последний элемент, удовлетворяющий свойству
  • findIndex находит индекс первого элемента, удовлетворяющего свойству
  • findLastIndex находит индекс последнего элемента, удовлетворяющего свойству
  • some проверяет, что в массиве в принципе есть элемент, удовлетворяющий свойству
  • every проверяет, что в массиве все элементы удовлетворяют свойству
const fruits = ["apple", "orange", "kiwi", "apple", "mango"]; console.log(fruits.filter(fruit => fruit.length === 5)); // ["orange", "apple", "mango"] console.log(fruits.find(fruit => fruit.length === 5)); // "apple" console.log(fruits.findIndex(fruit => fruit.length === 5)); // 0 console.log(fruits.findLast(fruit => fruit.length === 5)); // "mango" console.log(fruits.findLastIndex(fruit => fruit.length === 5)); // 4 console.log(fruits.every(fruit => fruit.length === 5)); // false console.log(fruits.some(fruit => fruit.length === 5)); // true

Получение элементов массива

  • at возвращает один элемент по индексу
  • slice возвращает подмассив с элементами между двумя индексами
  • join вормирует строку, соединяя все элементы массива
const fruits = ["apple", "orange", "kiwi", "apple", "mango"]; console.log(fruits.at(2)); // "kiwi" console.log(fruits.at(-2)); // "apple" console.log(fruits.slice(0, 3)); // ["apple", "orange", "kiwi"] console.log(fruits.slice(0, -3)); // ["apple", "orange"] console.log(fruits.slice(3)); // ["apple", "mango"] console.log(fruits.slice(-2)); // ["apple", "mango"] console.log(fruits.join("+")); // "apple+orange+kiwi+apple+mango"

Добавление и удаление элементов

  • push добавляет элемент в конец массива 😈
  • pop удаляет элемент из конца массива 😈
  • unshift добавляет элемент в начало массива 😈
  • shift удаляет элемент из начала массива 😈

Методы push и unshift изменяют массив, но не возвращают его. Скорее всего, вам никогда не потребуется пользоваться результатами этих методов. Можно считать, что они ничего не возвращают, только добавляют значение (на самом деле они возвращают новую длину массива).

Методы pop и shift не только удаляют крайний элемент, но и возвращают его.

const numbers = [4, 8, 15, 16, 23, 42]; const last = numbers.pop(); // 42 numbers.push(108); const first = numbers.shift(); // 4 numbers.unshift(815);
  • splice удаляет и добавляет элементы в произвольное место в массиве 😈

  • fill заполняет массив целиком или частично каким-то значением 😈

  • toSpliced создает новый массив с удаленными и добавленными элементами

  • with создает новый массив с одним измененным элементом

  • concat соединяет два массива, создавая новый

Изменение порядка элементов в массиве

  • toReversed создает новый массив с элементами в обратном порядке
  • reverse разворачивает элементы в обратном порядке в данном массиве 😈
  • toSorted создает новый массив с осортированными элементами
  • sort сортирует элементы в данном массиве 😈

Универсальные перебирающие методы

  • forEach для каждого элемента слева направо вызывает функцию-колбэк
  • reduce перебирает элементы слева направо, аккумулируя их в единое значение
  • reduceRight перебирает элементы справа налево, аккумулируя их в единое значение

Уменьшение вложенности

  • flat делает массив с массивами более плоским
  • flatMap эквивалентен вызову map + flat

Создание итераторов

Три метода создают из массива итераторы. Подробнее про итераторы можно посмотреть в разделе Итераторы.

  • keys — итератор ключей
  • values — итератор значений
  • entries — итератор пар ключ-значение

Методы, которые вы не будете использовать

  • copyWithin копирует часть элементов внутри массива на другие позиции 😈
  • toString фактически вызывает метод join, соединяя запятой
  • toLocaleString аналогично вызывает метод join, соединяя запятой