В этой статье мы увидим, как отменить функцию predicate в JavaScript. Функции предиката-это те, которые проверяют условие и возвращают истинный и ложный основано на аргументации. Наша задача состоит в том, чтобы получить функцию, противоположную функции предиката.
Мы следуем следующему методу, чтобы получить желаемый результат.
Способ 1:
Наша функция predicate проверяет наличие нечетных и четных чисел. Если число представляет собой модуль с 2, оно возвращает 1, тогда оно нечетное, в противном случае оно четное. Откажитесь от логики, проверяя условия аргументации.
Пример :
<script>
// Predicate function check odd
function isOdd(number) {
return number % 2 == 1;
}
// negation of isOdd function
function isNotOdd(number) {
return number % 2 !== 1;
}
// Predicate function check Even
function isEven(number) {
return number % 2 == 0;
}
// negation of isEven function
function isNotEven(number) {
return number % 2 !== 0;
}
// Outputs: true
console.log(isOdd(5));
// Outputs: true
console.log(isNotOdd(2));
// Output: false
console.log(isEven(3));
// Output> false
console.log(isNotEven(4));
</script>
Выход:
true
true
false
false
Способ 2:
Проблема с описанным выше методом заключается в том, что мы жестко кодируем нашу логику при каждом отрицании. У нас, вероятно, больше шансов ошибиться в состоянии отрицания. Более эффективным является отрицание функции предиката путем проверки условия.
Пример :
<script>
// Predicate function check odd
function isOdd(number) {
return number % 2 == 1;
}
// negation of isOdd function
function isNotOdd(number) {
return !isOdd(number);
}
// Predicate function check Even
function isEven(number) {
return number % 2 == 0;
}
// negation of isEven function
function isNotEven(number) {
return !isEven(number);
}
// Outputs: true
console.log(isOdd(5));
// Outputs: true
console.log(isNotOdd(10));
// Output: false
console.log(isEven(3));
// Output> false
console.log(isNotEven(4));
</script>
Выход :
true true false false
Способ 3:
В предыдущем методе мы отрицаем функцию для всех функций предикатов. Но наше решение может быть более эффективным, если мы создадим одну функцию, которая отрицает все функции предикатов. Мы создаем функцию предиката и связываем функцию отрицания со всеми функциями predicate.
Пример :
<script>
// Predicate function check odd
function isOdd(number) {
return number % 2 == 1;
}
// Predicate function check Even
function isEven(number) {
return number % 2 == 0;
}
// function that negate all function
function negate(pre) {
return function (number) {
return !pre(number);
};
}
// Wrapping predicate function to negate function
var isNotOdd = negate(isOdd);
var isNotEven = negate(isEven);
// Outputs: true
console.log(isOdd(5));
// Outputs: true
console.log(isNotOdd(10));
// Output: false
console.log(isEven(3));
// Output: false
console.log(isNotEven(4));
</script>
Выход :
true true false false