Какие методы массива не мутируют исходный массив
1️⃣ Как кратко ответить
Методы массива, которые не мутируют исходный массив, включают map(), filter(), reduce(), concat(), slice(), join(), includes(), indexOf(), lastIndexOf(), find(), findIndex(), every(), и some(). Эти методы возвращают новый массив или значение, не изменяя оригинальный массив.
2️⃣ Подробное объяснение темы
В JavaScript массивы являются изменяемыми объектами, что означает, что их содержимое может быть изменено. Однако, не все методы массивов изменяют (мутируют) исходный массив. Некоторые методы возвращают новый массив или значение, оставляя оригинальный массив неизменным. Это важно для сохранения данных в их первоначальном виде и предотвращения непреднамеренных изменений.
Методы, которые не мутируют массив:
-
map(): Создает новый массив с результатами вызова предоставленной функции для каждого элемента в массиве.const numbers = [1, 2, 3]; const doubled = numbers.map(num => num * 2); // numbers: [1, 2, 3] // doubled: [2, 4, 6]numbersостается неизменным.doubled— новый массив с удвоенными значениями.
-
filter(): Создает новый массив со всеми элементами, прошедшими проверку, реализованную в предоставленной функции.const numbers = [1, 2, 3, 4]; const evenNumbers = numbers.filter(num => num % 2 === 0); // numbers: [1, 2, 3, 4] // evenNumbers: [2, 4]numbersостается неизменным.evenNumbers— новый массив с четными числами.
-
reduce(): Применяет функцию к аккумулятору и каждому значению массива (слева направо), сводя его к единственному значению.const numbers = [1, 2, 3, 4]; const sum = numbers.reduce((acc, num) => acc + num, 0); // numbers: [1, 2, 3, 4] // sum: 10numbersостается неизменным.sum— сумма всех элементов массива.
-
concat(): Возвращает новый массив, состоящий из массива, на котором он был вызван, соединенного с другими массивами и/или значениями.const array1 = [1, 2]; const array2 = [3, 4]; const combined = array1.concat(array2); // array1: [1, 2] // array2: [3, 4] // combined: [1, 2, 3, 4]array1иarray2остаются неизменными.combined— новый массив, объединяющийarray1иarray2.
-
slice(): Возвращает новый массив, содержащий копию части исходного массива.const numbers = [1, 2, 3, 4]; const sliced = numbers.slice(1, 3); // numbers: [1, 2, 3, 4] // sliced: [2, 3]numbersостается неизменным.sliced— новый массив, содержащий элементы с индексами от 1 до 2.
-
join(): Объединяет все элементы массива в строку.const elements = ['Fire', 'Air', 'Water']; const joined = elements.join('-'); // elements: ['Fire', 'Air', 'Water'] // joined: 'Fire-Air-Water'elementsостается неизменным.joined— строка, содержащая элементы массива, разделенные дефисом.
-
includes(): Определяет, содержит ли массив определенное значение, возвращаяtrueилиfalse.const numbers = [1, 2, 3]; const hasTwo = numbers.includes(2); // numbers: [1, 2, 3] // hasTwo: truenumbersостается неизменным.hasTwo— булево значение, указывающее на наличие элемента.
-
indexOf()иlastIndexOf(): Возвращают первый или последний индекс, по которому данный элемент может быть найден в массиве, или -1, если элемент не найден.const numbers = [1, 2, 3, 2]; const index = numbers.indexOf(2); const lastIndex = numbers.lastIndexOf(2); // numbers: [1, 2, 3, 2] // index: 1 // lastIndex: 3numbersостается неизменным.indexиlastIndex— индексы первого и последнего вхождения элемента.
-
find()иfindIndex(): Возвращают первый элемент или его индекс, который удовлетворяет предоставленной функции.const numbers = [1, 2, 3, 4]; const found = numbers.find(num => num > 2); const foundIndex = numbers.findIndex(num => num > 2); // numbers: [1, 2, 3, 4] // found: 3 // foundIndex: 2numbersостается неизменным.found— первый элемент, удовлетворяющий условию.foundIndex— индекс первого элемента, удовлетворяющего условию.
-
every()иsome(): Проверяют, удовлетворяют ли все или некоторые элементы массива условию, заданному в функции.const numbers = [1, 2, 3, 4]; const allPositive = numbers.every(num => num > 0); const someGreaterThanTwo = numbers.some(num => num > 2); // numbers: [1, 2, 3, 4] // allPositive: true // someGreaterThanTwo: truenumbersостается неизменным.allPositiveиsomeGreaterThanTwo— булевые значения, указывающие на выполнение условия.
Эти методы полезны, когда необходимо работать с массивами, не изменяя их исходное состояние, что особенно важно в функциональном программировании и при работе с неизменяемыми данными.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться