JavaScript 如何否定谓词函数

JavaScript 如何否定谓词函数

在本文章中,我们将看到如何在JavaScript中否定谓词函数。谓词函数是根据条件检查并根据参数返回true和false的函数。我们的任务是获取谓词函数的相反结果。

我们按照以下方法来获得所需结果。

方法1

我们的谓词函数正在检查奇数和偶数。如果数字与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

在前面的方法中,我们对所有的谓词函数都取反。但是,如果我们创建一个函数来取反所有的谓词函数,我们的解决方案可能更有效。我们创建一个谓词函数,并将取反函数与所有的谓词函数绑定。

示例: 这个示例展示了上述解决方案的应用。

<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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程