ZetCode

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 - 语言参考

在本文中,我们使用了 JavaScript 中的谓词。

作者

我的名字是 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已经撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

查看 所有 JavaScript 教程。