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