具有多种功能的 Lodash 过滤器

3 javascript filter code-readability lodash

试图找出最干净的方法来执行以下操作:

我对一些结果进行了两次过滤,并且我正在使用 Lodash 过滤器来执行此操作。目前,我的代码如下所示:

resultsOne = _.filter(results, functionOne);
resultsTwo = _.filter(resultsOne, functionTwo);
Run Code Online (Sandbox Code Playgroud)

我意识到我可以组合 functionOne 和 functionTwo,但我喜欢将它们分开以提高可读性。是否有使用 Lodash 或纯 ol' Javascript 过滤两个函数的最佳实践?

谢谢!

Ori*_*ori 7

使用 lodash

您可以使用 来创建过滤函数_.overEvery(),并在过滤器中使用它:

var ff = _.overEvery([functionOne, functionTwo]);

var filteredResults = results.filter(ff)
Run Code Online (Sandbox Code Playgroud)

香草JS

创建一个过滤器函数数组,并使用Array#every将它们应用到一个值:

var filters = [functionOne, functionTwo];

filterdResults = results.filter(function(item) {
  return filters.every(function(ff) {
    return ff(item);
  });
});
Run Code Online (Sandbox Code Playgroud)