Редко, когда вам не задают никаких вопросов, связанных с этим, на собеседованиях по пользовательскому интерфейсу. В этом посте я собираюсь обсудить различные аспекты и важность этих методов и то, как они могут изменить ваш стиль кодирования.

Поскольку мы чаще всего работаем с массивами для сбора связанных данных, многие сценарии требуют работы с массивами, что включает в себя преобразование массива, применение фильтров или извлечение из него некоторых данных.

Эти методы во многих отношениях избавляют нас от необходимости делать это чище и лаконичнее, без каких-либо побочных эффектов.

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

Сценарий. Получив массив с радиусом окружности, выведите два массива: один с площадью круга, а другой с окружностью.

Используемые формулы:

  • Значение PI = 3,14
  • Площадь круга = PI * радиус * радиус
  • Диаметр = 2 * PI * радиус

Старый школьный метод с использованием цикла for:

// calculating circle area
const radius = [1, 2, 3, 4, 5];
const area = [];
for (let i = 0; i < radius.length; i++) {
  area.push(Math.PI * Math.pow(radius[i], 2));
}
// calculating circle circumference
const circumference = [];
for (let i = 0; i < radius.length; i++) {
  circumference.push(2 * Math.PI * radius[i]);
}

Использование карты:

const radius = [1, 2, 3, 4, 5];
const area = radius.map(r => Math.PI * r * r);
const circumference = radius.map(r => 2 * Math.PI * r);

Как вы можете заметить, при использовании подхода с циклом for есть только одно изменение в вычислении площади и окружности — это сама формула, а часть итерации является общей и повторяющейся.

В этом суть использования map, поскольку он абстрагирует часть итерации для вас, и все, на чем вам нужно сосредоточиться, — это логика преобразования. Таким образом, ваши многочисленные строки кода умещаются всего в две строки. Разве это не похоже на волшебную палочку?

Обобщая преимущества использования map по сравнению с циклом for:

Очень читаемый и лаконичный, поскольку он хорошо согласуется с функциональным программированием.

Не изменяет исходный массив, а возвращает новый массив с преобразованными значениями.

Встроенная возможность итерации; все, о чем мне нужно заботиться, это передать мою функцию преобразования.

Поддерживает цепочку с другими методами массива, такими как filter, reduce и т. д.

Filter и reduce обеспечивают те же преимущества, что и map, но эти два варианта предназначены для разных вариантов использования, как показано ниже:

Фильтр: перебирает элементы массива и возвращает только те элементы, которые проходят логику фильтра.

// Filter only even numbers from the given array
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(n => n % 2 === 0);

Reduce: его можно использовать для получения некоторых данных из массива на основе переданной логики.

// Calculate the sum of array elements
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, num) => acc + num);

Также сделал несколько короткометражек для ютуба на моем канале. Пожалуйста, проверьте, поможет ли это вам понять больше.





Если вы найдете этот пост достойным прочтения, пожалуйста, поделитесь им и подпишитесь на меня, чтобы увидеть больше таких постов в будущем. 😎