如何将变量值传递给 .filter()

Mic*_*der 4 javascript

以下代码取自此处的参考:

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

    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
    // filtered is [12, 130, 44]
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以动态改变的值10return通过传递变线。从参考我无法弄清楚如何做到这一点。我想调用相同的过滤器回调,但为正则表达式测试传递唯一值。

所以它看起来像:

function isBigEnough(value, num) {
      return value >= num;
    }
Run Code Online (Sandbox Code Playgroud)

PMV*_*PMV 7

最简单的方法是简单地使用匿名函数并关闭要使用的变量:

var minSize = 10;
var filtered = [12, 5, 8, 130, 44].filter( val => val >= minSize );
Run Code Online (Sandbox Code Playgroud)

如果你真的想保留一个命名函数来回调,你可以使用 bind 部分应用一个参数:

function isBigEnough(minSize, value) {
  return value >= minSize;
}

var filtered = [12, 5, 8, 130, 44].filter(isBigEnough.bind(null,10));
Run Code Online (Sandbox Code Playgroud)

在这里,bind 将返回一个新函数,其中最左边的参数绑定为 10(第一个参数为 null,是this在调用时传递给函数的参数)。因此过滤器传入的参数将显示为回调中的第二个值。