JavaScript 使用一个函数与数组一起使用谓词的工作方式
如何编写一个程序,以谓词和数组为参数,类似于Array.filter(),但仅在pred(x) === false
时保留x(使用JavaScript)?
在JavaScript中,谓词与数学中的谓词是相同的,它返回true或false。
谓词就像一个函数,用于确定传入的参数是否满足给定条件。谓词只返回true或false。
在本文中,让我们看看在JavaScript中使用一个函数与数组一起使用谓词的工作方式。
语法:
function predicate(argument)
{
if(condition_satisfied)
return true;
else
return false;
}
function using_predicate(array, predicate)
{
for(elements in array )
{
if (predicate is satisfied)
{
code for satisfied condition;
}
else
{
code for else condition;
}
}
}
示例: 以下函数接受一个数组和一个判断条件,并返回满足该条件的数组。 pred(x)===false
。在这个函数中,如果数组元素是偶数,则判断条件返回 true ,否则返回 false 。输出应该是奇数。
Javascript
<script>
function pred(x) {
if (x % 2 == 0)
return true;
else
return false;
}
function implementPredicate(array, pred) {
var res = [];
for (let i = 0; i < array.length; i++) {
if (pred(array[i]) === false) {
res.push(array[i]);
}
}
return res;
}
var array = [1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 8, 8];
var final = implementPredicate(array, pred);
console.log("The resultant array is "+final);
</script>
输出:
The resultant array is 1,3,5,7
使用带有filter()方法的谓词:
语法:
function predicate(argument)
{
if(condition_satisfied)
return true;
else
return false;
}
array.filter(predicate);
示例: 这个示例使用了filter()方法。
JavaScript
<script>
function pred(x) {
if (x % 2 == 0)
return false;
else
return true;
}
var array = [1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 8, 8];
var final = array.filter(pred);
console.log("The resultant array is "+final);
</script>
输出:
The resultant array is 1,3,5,7
示例: 下面的函数使用谓词来统计数组中数字8的频率,将数组和谓词作为参数传递给函数。
JavaScript
<script>
function pred(x) {
if (x == 8)
return true;
else
return false;
}
function implementPredicate(array, pred) {
var res = 0;
for (let i = 0; i < array.length; i++) {
if (pred(array[i]) === true) {
res++;
}
}
return res;
}
var array = [1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 8, 8];
var final = implementPredicate(array, pred)
console.log("The frequency of 8 is " + final);
</script>
输出:
The frequency of 8 is 3