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

Пока что Еще 10 функций утилиты, сделанные с уменьшением

Тридцать функций Всего! Это моя третья статья о коммунальных функциях, сделанных с уменьшением. Часть одна (10 функций) Часть два (10 функций) В целом у нас теперь есть тридцать функций помощника, сделанные с помощью JavaScript, уменьшают. Для получения более подробной информации о том, чтобы уменьшить себя, подумайте об чтении моего учебника на нем. Функции, перечисленные ниже, были

Тридцать функций Всего!

Это моя третья статья о коммунальных функциях, сделанных с уменьшением.

  • Часть одна (10 функций)
  • Часть два (10 функций)

В целом у нас сейчас есть тридцать Функции помощника, сделанные с помощью JavaScript Уменьшить Отказ Для более подробной информации на Уменьшить Сама, подумайте, что читать мой Учебник на этом Отказ

Функции, перечисленные ниже, были вдохновлены удивительными Ramdajs библиотека. Я также писал модульные тесты, чтобы обеспечить правильное поведение, которое вы можете найти на мой github Отказ

1. регулировать

Параметры

  1. индекс – индекс исходного массива
  2. FN – Функция, чтобы подать заявку на это показатель
  3. Список – список предметов.

Описание

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

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

const double = (x) => x * 2;

adjust(1, double, [1, 2, 3]);
// [1, 4, 3]

adjust(4, double, [1, 2, 3]);
// [1, 2, 3]

Реализация

const adjust = (index, fn, list) =>
  list.reduce((acc, value, sourceArrayIndex) => {
    const valueToUse = sourceArrayIndex === index ? fn(value) : value;

    acc.push(valueToUse);

    return acc;
  }, []);

2. вершины

Параметры

  1. Пары – список пар клавишных пар.

Описание

Создает объект из списка пар клавишных пар.

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

fromPairs([['a', 1], ['b', 2], ['c', 3]]);
// { a: 1, b: 2, c: 3 }

Реализация

const fromPairs = (pairs) =>
  pairs.reduce((acc, currentPair) => {
    const [key, value] = currentPair;

    acc[key] = value;

    return acc;
  }, {});

3. диапазон

Параметры

  1. от – Начальный номер.
  2. к – Окончание номера.

Описание

Возвращает список номеров из данного диапазона.

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

range(1, 5);
// [1, 2, 3, 4, 5]

Реализация

const range = (from, to) =>
  Array.from({ length: to - from + 1 }).reduce((acc, _, index) => {
    acc.push(from + index);

    return acc;
  }, []);

4. повторить

Параметры

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

Описание

Возвращает список заданных значений N раз.

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

repeat({ favoriteLanguage: 'JavaScript' }, 2);

/*
[{
    favoriteLanguage: 'JavaScript'
}, {
    favoriteLanguage: 'JavaScript'
}],
*/

Реализация

const repeat = (item, times) =>
  Array.from({ length: times }).reduce((acc) => {
    acc.push(item);

    return acc;
  }, []);

5. времена

Параметры

  1. FN – Функция позвонить.
  2. Numtimes – количество раз, чтобы вызвать эту функцию.

Описание

Называет данную функцию n раз. FN Предоставленные получает текущий индекс в качестве параметра.

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

times((x) => x * 2, 3);
// [0, 2, 4]

Реализация

const times = (fn, numTimes) =>
  Array.from({ length: numTimes }).reduce((acc, _, index) => {
    acc.push(fn(index));

    return acc;
  }, []);

6. дедупликата

Параметры

  1. предметы – список предметов.

Описание

Дедупливирует элементы в списке.

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

deduplicate([[1], [1], { hello: 'world' }, { hello: 'world' }]);
// [[1], { hello: 'world' }]

Реализация

const deduplicate = (items) => {
  const cache = {};

  return items.reduce((acc, item) => {
    const alreadyIncluded = cache[item] === true;

    if (!alreadyIncluded) {
      cache[item] = true;
      acc.push(item);
    }

    return acc;
  }, []);
};

7. задний ход

Параметры

  1. Список – список предметов.

Описание

Перерывает список без Мутируясь, возвращая новый список, в отличие от родных Array.Reverse метод.

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

reverse([1, 2, 3]);
// [3, 2, 1]

Реализация

const reverse = (list) =>
  list.reduce((acc, _, index) => {
    const reverseIndex = list.length - index - 1;
    const reverseValue = list[reverseIndex];

    acc.push(reverseValue);

    return acc;
  }, []);

8. вставлять

Параметры

  1. индекс – Индекс для вставки.
  2. Сублиста – Список вставить.
  3. Искусство – список источников.

Описание

Вставляет подписи в список в данном индексе. Прилагается к концу списка, если индекс слишком велик.

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

insertAll(1, [2, 3, 4], [1, 5]);
// [1, 2, 3, 4, 5]

insertAll(10, [2, 3, 4], [1, 5]);
// [1, 5, 2, 3, 4]

Реализация

const insertAll = (index, subList, sourceList) => {
  if (index > sourceList.length - 1) {
    return sourceList.concat(subList);
  }

  return sourceList.reduce((acc, value, sourceArrayIndex) => {
    if (index === sourceArrayIndex) {
      acc.push(...subList, value);
    } else {
      acc.push(value);
    }

    return acc;
  }, []);
};

9. Mergeall.

Параметры

  1. объектList – Список объектов для объединения.

Описание

Объединяет список объектов в один.

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

mergeAll([
    { js: 'reduce' },
    { elm: 'fold' },
    { java: 'collect' },
    { js: 'reduce' }
]);
  
/*
{
    js: 'reduce',
    elm: 'fold',
    java: 'collect'
}
*/

Реализация

const mergeAll = (objectList) =>
  objectList.reduce((acc, obj) => {
    Object.keys(obj).forEach((key) => {
      acc[key] = obj[key];
    });

    return acc;
  }, {});

10. xprod

Параметры

  1. list1 – список предметов.
  2. list2 – список предметов.

Описание

Учитывая список, возвращает новый список всех возможных пар.

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

xprod(['Hello', 'World'], ['JavaScript', 'Reduce']);
/*
[
  ['Hello', 'JavaScript'],
  ['Hello', 'Reduce'],
  ['World', 'JavaScript'],
  ['World', 'Reduce']
]
*/

Реализация

const xprod = (list1, list2) =>
  list1.reduce((acc, list1Item) => {
    list2.forEach((list2Item) => {
      acc.push([list1Item, list2Item]);
    });

    return acc;
  }, []);

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

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

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

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

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

До скорого!

Оригинал: “https://www.freecodecamp.org/news/yet-another-10-utils-using-reduce/”