Рубрики
Без рубрики

Fusion в JavaScript

В настоящее время чрезвычайно распространено видеть использование методов массива, таких как Array.prototype.map (), ar … с меткой JavaScript, функциональный, учебник.

В настоящее время чрезвычайно распространено видеть использование методов массива, таких как Array.prototype.map () , Array.prototype.filter () и Array.prototype.reduce () Чтобы назвать несколько в манипулировании структур данных списка.

Вы можете увидеть много цепочек методов, таких как цепочка Array.prototype.map () Чтобы обработать преобразование данных, цепочку Array.prototype.filter () Чтобы включить/исключить конкретные элементы в массив или смесь двух (2) Array.prototype.map () и Array.prototype.reduce () в конце. Эти виды цепей чрезвычайно распространены, и это случается очень часто.

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

Fusion – это метод объединения чистых функций – использование состава и удаления посреднических копий данных на каждом уровне.

Давайте посмотрим на пример, сравнивающий не слияние и подход слияния.

Я хотел бы начать отмечать, что функция Mapper, которая передается Array.prototype.map () всегда должен, по крайней мере, обрабатывать его процесс чистым образом, чтобы избежать неожиданных результатов. Избегайте использования его и доступа к внешним переменным или мутируют другую переменную за пределами его лексического прицела. Сделать это чистым.

С помощью данного примера вы могли бы подумать, что он хорошо написан и легко понятно, но в чем дело? Какова скрытая стоимость наличия цепочки Array.prototype.map ()?

Давайте обнаружим это вместе, распаковывая эту цепочку.

Вы удивлены? Сначала я слишком.

Каждая цепочка метода, будь то Array.prototype.map () , Array.prototype.filter () или Array.prototype.reduce () Поставляется с стоимостью. Это приведет к тому, чтобы снова и снова итерация всего списка, что повлияет на производительность, особенно если мы говорим о крупных наборах данных.

Вы можете подумать, почему бы не присоединиться к двум (2) функциям Mapper в одном вызове Array.prototype.map () ?

Да, мы можем присоединиться к ним в одной карте, чтобы избежать цепочки Array.prototype.map () Анкет Это на самом деле полуфинс уже. Полный подход слияния использует преимущества композиции.

У меня есть вопрос к вам, разве не неудобно передать результат от одной функции к следующей функции? Что если заказ изменился? Как мы можем сделать это лучше?

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

Pipe () Утилита принимает бесконечное количество функций, которые он будет работать слева направо. Это означает, что он выполнит функции, add () и умножение2 () слева направо и результат текущей функции будет передана следующему. Это своего рода ярлык, а не вручную передавать результат от одной функции в другую функцию, как мы делали в нашем предыдущем примере.

Когда функция чистая, это означает, что мы можем воспользоваться композицией. Композиция – это акт объединения чистых функций для создания новой единой функции. В нашем примере мы создали новую единую функцию, которая является композицией двух (2) чистых функций Mapper, используя Pipe () полезность.

Теперь, когда мы применили технику слияния, наш код теперь будет обрабатывать даже большие наборы данных в одной итерации без дублирования затрат на итерацию, а также мы воспользовались композицией здесь, что великолепно!

Fusion – отличная простая техника на наших руках. Это может помочь нам, когда мы имеем дело со структурами данных списка, чтобы воспользоваться преимуществами композиции, а также получить преимущества в производительности.

Если у нас есть цепь карт вместе, композиция – это гораздо лучший способ заявления о том, какими будут все эти шаги. А не три (3) .map Вызовы, это было бы предпочтительным с функциональной точки зрения для использования композиции. – Кайл Симпсонс

Если вы заинтересованы в том, чтобы проверить его больше, вот несколько ссылок:

Спасибо за чтение. Я надеюсь, что это поможет вам в вашем путешествии! ❤

Оригинал: “https://dev.to/jmaicaaan/fusion-in-javascript-3584”