You are currently viewing Как отменить функцию predicate в JavaScript ?

Как отменить функцию predicate в JavaScript ?

В этой статье мы увидим, как отменить функцию 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