Отрицание предикатных функций в JavaScript

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы изучим концепцию отрицания предикатной функции в JavaScript. Мы узнаем, как создать высшего порядка функцию, которая принимает предикатную функцию и возвращает новую функцию, которая отрицает выход исходной функции. С помощью практических примеров мы увидим, как эта техника может быть полезна при фильтрации массивов или проверке ввода.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28506{{"Отрицание предикатных функций в JavaScript"}} javascript/data_types -.-> lab-28506{{"Отрицание предикатных функций в JavaScript"}} javascript/arith_ops -.-> lab-28506{{"Отрицание предикатных функций в JavaScript"}} javascript/comp_ops -.-> lab-28506{{"Отрицание предикатных функций в JavaScript"}} javascript/higher_funcs -.-> lab-28506{{"Отрицание предикатных функций в JavaScript"}} javascript/spread_rest -.-> lab-28506{{"Отрицание предикатных функций в JavaScript"}} end

Как отрицать предикатную функцию в JavaScript

Чтобы отрицать предикатную функцию в JavaScript, можно использовать оператор !. Для этого можно создать высшего порядка функцию под названием negate, которая принимает предикатную функцию и применяет к ней оператор ! с ее аргументами. Вот пример, как реализовать negate:

const negate =
  (func) =>
  (...args) =>
    !func(...args);

Затем можно использовать negate, чтобы отрицать любую предикатную функцию. Вот пример, как использовать negate, чтобы отфильтровать четные числа из массива:

const isEven = (n) => n % 2 === 0;
const isOdd = negate(isEven);

[1, 2, 3, 4, 5, 6].filter(isOdd); // [ 1, 3, 5 ]

В этом примере isEven - это предикатная функция, которая проверяет, является ли число четным. Затем мы используем negate, чтобы создать новую предикатную функцию под названием isOdd, которая проверяет, является ли число нечетным, отрицая isEven. Наконец, мы используем isOdd с методом filter, чтобы отфильтровать четные числа из массива.

Резюме

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