JavaScript 谓词
最后修改于 2023 年 10 月 18 日
在本文中,我们将展示如何在 JavaScript 中使用谓词。
一般来说,谓词是对某事物的陈述,要么为真,要么为假。在编程中,谓词代表单个参数的函数,它返回一个布尔值。
使用 find 的 JS 谓词
find
函数接受一个谓词来确定满足它的第一个元素。
main.js
function isPositive(e) { return e > 0; } let vals = [-2, -3, 0, 4, 3, -1, 1, 7]; let res = vals.find(isPositive); console.log(res); let res2 = vals.find(e => e > 0); console.log(res2);
在示例中,我们找到数组中的第一个正值。
function isPositive(e) { return e > 0; }
第一个谓词是经典函数定义。
let res2 = vals.find(e => e > 0);
第二个谓词是一个匿名箭头函数。
$ node main.js 4 4
使用 filter 的 JS 谓词
filter
函数创建一个新数组,其中填充了满足提供的谓词的元素。
main.js
let vals = [-2, -3, 0, 4, 3, -1, 1, 7]; let pos = vals.filter(e => e > 0); console.log(pos); let neg = vals.filter(e => e < 0); console.log(neg); let evs = vals.filter(e => e % 2 === 0); console.log(evs);
在示例中,我们过滤掉正值、负值和偶数值。
$ node main.js [ 4, 3, 1, 7 ] [ -2, -3, -1 ] [ -2, 0, 4 ]
使用 every/some 的 JS 谓词
every
函数确定数组的所有成员是否满足指定的谓词。some
函数确定数组的任何元素是否满足谓词。
main.js
let vals = [-2, -3, 0, 4, 3, -1, 1, 7]; if (vals.every(e => e > 0)) { console.log('all values are positive'); } else { console.log('not all values are positive'); } if (vals.some(e => e > 0)) { console.log('at least one value is positive'); } else { console.log('no value is positive'); }
在示例中,我们检查数组的所有值是否为正,以及是否至少有一个值为正。
$ node main.js not all values are positive at least one value is positive
JS 否定谓词
在下一个示例中,我们定义一个 negate
函数,该函数否定给定的谓词。
main.js
function negate(other) { return e => { return !other(e) }; }; let vals = [-2, -3, 0, 4, 3, -1, 1, 7]; let res = vals.filter(negate(e => e > 0)); console.log(res); let res2 = vals.filter(negate(negate(e => e > 0))); console.log(res2);
我们将 negate
函数与 filter
一起使用。
function negate(other) { return e => { return !other(e) }; };
在 negate
函数中,我们使用 !
运算符,它计算其操作数的逻辑否定。
let res = vals.filter(negate(e => e > 0));
我们否定了箭头函数的输出,该函数返回正值。
let res2 = vals.filter(negate(negate(e => e > 0)));
我们应用 negate
函数两次。
$ node main.js [ -2, -3, 0, -1 ] [ 4, 3, 1, 7 ]
来源
在本文中,我们使用了 JavaScript 中的谓词。