¿Cómo negar una función de predicado en JavaScript?

En este artículo, veremos cómo negar una función de predicado en JavaScript. Las funciones de predicado son las que verifican la condición y devuelven verdadero y falso según el argumento. Nuestra tarea es obtener el opuesto de la función de predicado. 

Seguimos el siguiente método para obtener el resultado deseado.

Método 1: nuestra función de predicado busca números pares e impares. Si el número es un módulo con 2, devuelve 1, entonces es impar, de lo contrario es par. Negue la lógica mientras verifica las condiciones para el argumento.

Ejemplo : 

Javascript

<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>

Producción: 

true
true 
false
false

Método 2: El problema con el método anterior es que codificamos nuestra lógica en cada negación. Probablemente tengamos más posibilidades de cometer un error en la condición de negación. Más eficaz es negar la función de predicado comprobando la condición.

Ejemplo :

Javascript

<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>

Producción : 

true 
true 
false
false

Método 3: en el método anterior, estamos negando la función para todas las funciones de predicado. Pero nuestra solución puede ser más efectiva si creamos una función que niegue todas las funciones de predicado. Hacemos la función de predicado y vinculamos la función de negación con todas las funciones de predicado. 

Ejemplo :

Javascript

<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>

Producción : 

true 
true 
false 
false

Publicación traducida automáticamente

Artículo escrito por satyam00so y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *