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

10 функций утилиты JavaScript с уменьшением

Мульти-инструмент снова поражает. В моей последней статье я предложил вам вызов, чтобы воссоздать известные функции, используя уменьшение. Эта статья покажет вам, как некоторые из них могут быть реализованы вместе с некоторыми дополнениями! Всего мы собираемся посмотреть на десять полезных функций. Они невероятно удобны на вашем

Мульти-инструмент снова поражает.

В моя последняя статья Я предложил вам вызов, чтобы воссоздать известные функции, используя Уменьшить Отказ Эта статья покажет вам, как некоторые из них могут быть реализованы вместе с некоторыми дополнениями!

Всего мы собираемся посмотреть на десять полезных функций. Они невероятно удобны на ваших проектах, и лучше всего, они реализованы с использованием Уменьшить Действительно Я привлек много вдохновения от Ramdajs Библиотека Для этого, так что проверьте это!

1. некоторые

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов для тестирования.

Описание

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

Реализация

const some = (predicate, array) =>
  array.reduce((acc, value) => acc || predicate(value), false);

использование

const equals3 = (x) => x === 3;

some(equals3, [3]); // true
some(equals3, [3, 3, 3]); // true
some(equals3, [1, 2, 3]); // true
some(equals3, [2]); // false

2. все

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов для тестирования.

Описание

Если предикат Возвращает правда для каждый Пункт, все Возвращает правда Отказ В противном случае это возвращает ложь Отказ

Реализация

const all = (predicate, array) =>
  array.reduce((acc, value) => acc && predicate(value), true);

использование

const equals3 = (x) => x === 3;

all(equals3, [3]); // true
all(equals3, [3, 3, 3]); // true
all(equals3, [1, 2, 3]); // false
all(equals3, [3, 2, 3]; // false

3. никто

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов для тестирования.

Описание

Если предикат Возвращает ложь для каждый Пункт, Нет Возвращает правда Отказ В противном случае это возвращает ложь Отказ

Реализация

const none = (predicate, array) =>
  array.reduce((acc, value) => !acc && !predicate(value), false);

использование

const isEven = (x) => x % 2 === 0;

none(isEven, [1, 3, 5]); // true
none(isEven, [1, 3, 4]); // false
none(equals3, [1, 2, 4]); // true
none(equals3, [1, 2, 3]); // false

4. карта

Параметры

  1. трансформация – Функция для запуска на каждом элементе.
  2. Массив – список предметов для преобразования.

Описание

Возвращает новый массив элементов, каждый из которых преобразован в соответствии с данным трансформация Отказ

Реализация

const map = (transformFunction, array) =>
  array.reduce((newArray, item) => {
    newArray.push(transformFunction(item));

    return newArray;
  }, []);

использование

const double = (x) => x * 2;
const reverseString = (string) =>
  string
    .split('')
    .reverse()
    .join('');

map(double, [100, 200, 300]);
// [200, 400, 600]

map(reverseString, ['Hello World', 'I love map']);
// ['dlroW olleH', 'pam evol I']

5. фильтр

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов для фильтрации.

Описание

Возвращает новый массив. Если предикат Возвращает правда Этот элемент добавлен в новый массив. В противном случае этот предмет исключается из нового массива.

Реализация

const filter = (predicate, array) =>
  array.reduce((newArray, item) => {
    if (predicate(item) === true) {
      newArray.push(item);
    }

    return newArray;
  }, []);

использование

const isEven = (x) => x % 2 === 0;

filter(isEven, [1, 2, 3]);
// [2]

filter(equals3, [1, 2, 3, 4, 3]);
// [3, 3]

6. отклонять

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов для фильтрации.

Описание

Так же, как Фильтр , но с противоположным поведением.

Если предикат Возвращает ложь Этот элемент добавлен в новый массив. В противном случае этот предмет исключается из нового массива.

Реализация

const reject = (predicate, array) =>
  array.reduce((newArray, item) => {
    if (predicate(item) === false) {
      newArray.push(item);
    }

    return newArray;
  }, []);

использование

const isEven = (x) => x % 2 === 0;

reject(isEven, [1, 2, 3]);
// [1, 3]

reject(equals3, [1, 2, 3, 4, 3]);
// [1, 2, 4]

7. найти

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов для поиска.

Описание

Возвращает первый элемент, который соответствует данному предикат Отказ Если никаких элементов совпадает, то undefined возвращается.

Реализация

const find = (predicate, array) =>
  array.reduce((result, item) => {
    if (result !== undefined) {
      return result;
    }

    if (predicate(item) === true) {
      return item;
    }

    return undefined;
  }, undefined);

использование

const isEven = (x) => x % 2 === 0;

find(isEven, []); // undefined
find(isEven, [1, 2, 3]); // 2
find(isEven, [1, 3, 5]); // undefined
find(equals3, [1, 2, 3, 4, 3]); // 3
find(equals3, [1, 2, 4]); // undefined

8. разбиение

Параметры

  1. предикат – Функция, которая возвращает правда или ложный .
  2. Массив – список предметов.

Описание

«Разбиения» или разбивает массив на два на основе предикат Отказ Если предикат Возвращает правда Товар входит в список 1. В противном случае товар входит в список 2.

Реализация

const partition = (predicate, array) =>
  array.reduce(
    (result, item) => {
      const [list1, list2] = result;

      if (predicate(item) === true) {
        list1.push(item);
      } else {
        list2.push(item);
      }

      return result;
    },
    [[], []]
  );

использование

const isEven = (x) => x % 2 === 0;

partition(isEven, [1, 2, 3]);
// [[2], [1, 3]]

partition(isEven, [1, 3, 5]);
// [[], [1, 3, 5]]

partition(equals3, [1, 2, 3, 4, 3]);
// [[3, 3], [1, 2, 4]]

partition(equals3, [1, 2, 4]);
// [[], [1, 2, 4]]

9. вычеркивать

Параметры

  1. ключ – ключевое имя, чтобы сорвать из объекта
  2. Массив – список предметов.

Описание

Разбивает данный ключ от каждого элемента в массиве. Возвращает новый массив этих значений.

Реализация

const pluck = (key, array) =>
  array.reduce((values, current) => {
    values.push(current[key]);

    return values;
  }, []);

использование

pluck('name', [{ name: 'Batman' }, { name: 'Robin' }, { name: 'Joker' }]);
// ['Batman', 'Robin', 'Joker']

pluck(0, [[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
// [1, 4, 7]

10. сканирование

Параметры

  1. Редуктор – Стандартная функция редуктора, которая принимает два параметра – аккумулятор и текущий элемент из массива.
  2. InitiveValue – начальное значение для аккумулятора.
  3. Массив – список предметов.

Описание

Работает так же, как Уменьшить Но вместо этого только один результат он возвращает список каждого пониженного значения на пути к одному результату.

Реализация

const scan = (reducer, initialValue, array) => {
  const reducedValues = [];

  array.reduce((acc, current) => {
    const newAcc = reducer(acc, current);

    reducedValues.push(newAcc);

    return newAcc;
  }, initialValue);

  return reducedValues;
};

использование

const add = (x, y) => x + y;
const multiply = (x, y) => x * y;

scan(add, 0, [1, 2, 3, 4, 5, 6]);
// [1, 3, 6, 10, 15, 21] - Every number added from 1-6

scan(multiply, 1, [1, 2, 3, 4, 5, 6]);
// [1, 2, 6, 24, 120, 720] - Every number multiplied from 1-6

Хотите бесплатную коучинг?

Если вы хотите запланировать бесплатный звонок для обсуждения вопросов для работы в интерфейсах, касающихся кода, интервью, карьеры или чего-либо еще Следуй за мной в Twitter и DM мне Отказ

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

Спасибо за прочтение

Для большего количества контента посмотрите https://yazeedb.com!

До скорого!

Оригинал: “https://www.freecodecamp.org/news/10-js-util-functions-in-reduce/”