Что такое мутирующие и не мутирующие методы?

Этот вопрос помогает проверить понимание концепции мутирующих и не мутирующих методов в JavaScript, а также знание основных методов работы с массивами и объектами.

Короткий ответ

Мутирующие методы изменяют оригинальный массив или объект, тогда как не мутирующие методы возвращают новый массив или объект без изменения исходного. Например, методы push() и pop() являются мутирующими, потому что они изменяют исходный массив. В то время как map() и filter() являются не мутирующими, так как они создают новый массив на основе исходного.

Длинный ответ

В JavaScript методы работы с массивами и объектами делятся на мутирующие и не мутирующие.

 

Мутирующие методы: Эти методы изменяют исходный массив или объект. Например:

 

push(): Добавляет один или несколько элементов в конец массива и изменяет его.

const fruits = ['apple', 'banana']; 
fruits.push('orange'); // ['apple', 'banana', 'orange']

splice(): Позволяет удалять или заменять элементы в массиве, изменяя его.

const fruits = ['apple', 'banana', 'orange']; 
fruits.splice(1, 1); // Удаляет 'banana'

Не мутирующие методы: Эти методы возвращают новый массив или объект, не изменяя исходный. Например:

 

map(): Создает новый массив, где каждый элемент является результатом выполнения заданной функции для каждого элемента исходного массива.

const numbers = [1, 2, 3]; 
const doubled = numbers.map(num => num * 2); // [2, 4, 6]

filter(): Создает новый массив, состоящий только из элементов, которые удовлетворяют заданному условию.

const numbers = [1, 2, 3, 4]; 
const evens = numbers.filter(num => num % 2 === 0); // [2, 4]

 

Понимание различий между мутирующими и не мутирующими методами важно, так как это может влиять на производительность и предсказуемость кода. Например, при использовании библиотек для управления состоянием, таких как Redux, предпочтительно использовать не мутирующие методы, чтобы избежать непредсказуемых изменений состояния.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Подпишись на React Developer в телеграм