На этой странице представлен полный гайд по всем методам массива. Они сгруппированы не по алфавиту и не по дате появления в языке, а по смыслу.
Методы массивов делятся на мутирующие и немутирующие. Мутирующие изменяют содержимое массива (добавляют, удаляют, переставляют элементы). Немутирующие — не делают этого. Почти все методы немутирующие. Если метод мутирующий, об этом будет указано символом 😈.
ТОП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" в массиве нет.
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);
В джаваскрипте семь методов, принимающих предикат и возвращающих элементы, индексы или информацию о наличии элементов.
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
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 и 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 соединяет два массива, создавая новый
Три метода создают из массива итераторы. Подробнее про итераторы можно посмотреть в разделе Итераторы.