Тридцать функций Всего!
Это моя третья статья о коммунальных функциях, сделанных с уменьшением.
- Часть одна (10 функций)
- Часть два (10 функций)
В целом у нас сейчас есть тридцать Функции помощника, сделанные с помощью JavaScript Уменьшить Отказ Для более подробной информации на Уменьшить Сама, подумайте, что читать мой Учебник на этом Отказ
Функции, перечисленные ниже, были вдохновлены удивительными Ramdajs библиотека. Я также писал модульные тесты, чтобы обеспечить правильное поведение, которое вы можете найти на мой github Отказ
1. регулировать
Параметры
индекс– индекс исходного массиваFN– Функция, чтобы подать заявку на этопоказательСписок– список предметов.
Описание
Применяет функцию к значению в данном индексе. Возвращает оригинальный массив, если указанный индекс отсутствует из границ.
использование
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. вершины
Параметры
Пары– список пар клавишных пар.
Описание
Создает объект из списка пар клавишных пар.
использование
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. диапазон
Параметры
от– Начальный номер.к– Окончание номера.
Описание
Возвращает список номеров из данного диапазона.
использование
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. повторить
Параметры
Предмет– Предмет, чтобы повторить.раз– количество раз, чтобы повторить.
Описание
Возвращает список заданных значений 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. времена
Параметры
FN– Функция позвонить.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. дедупликата
Параметры
предметы– список предметов.
Описание
Дедупливирует элементы в списке.
использование
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. задний ход
Параметры
Список– список предметов.
Описание
Перерывает список без Мутируясь, возвращая новый список, в отличие от родных 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. вставлять
Параметры
индекс– Индекс для вставки.Сублиста– Список вставить.Искусство– список источников.
Описание
Вставляет подписи в список в данном индексе. Прилагается к концу списка, если индекс слишком велик.
использование
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.
Параметры
объект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
Параметры
list1– список предметов.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/”