我将使用MDN Array.prototype.filter()文档中的示例。

我们可以将解耦的函数传递给更高阶的函数,如下所示:

function isBigEnough(value) {
  return value >= 10;
}

var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]


使用上面的示例作为参考,是否有可能在没有定义另一个解耦函数isSmallEnough()的情况下过滤“不够大”的结果?为了方便起见,我们想返回[5, 8]

我们可以重用isBigEnough来实现吗?

最佳答案

您可以创建一个返回函数倒置形式的函数:



function not(predicate) {
  return function() {
    return !predicate.apply(this, arguments);
  };
}

function isBigEnough(value) {
  return value >= 10;
}

var filtered = [12, 5, 8, 130, 44].filter(not(isBigEnough));
console.log(filtered);

关于javascript - 使Array.filter()返回false而不是true的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41595354/

10-09 17:30