lodash的过滤函数是否具有上下文?

Tou*_*uch 5 javascript arrays function underscore.js lodash

我已经查看了lodash过滤器文档,并且不清楚第三个参数是否是上下文.

我正在使用一个cytoscape插件(dagre),它似乎this作为一个3参数传递.当我在调用filter方法之前暂停执行时,this会定义.但是在电话会议中this是未定义的.

我查看了下划线过滤器文档,它似乎将第三个参数作为上下文.所以我有点猜测插件最初使用下划线然后可能改为lodash.我正在研究的项目是使用lodash.

我无法理解为什么this在我能做到的那一点上是空的.它可能是项目特定的,但我只想清楚lodash过滤器的第三个参数.

lodash的过滤器的定义是否与下划线的过滤器完全相同?从文档中看起来并非如此.

cнŝ*_*ŝdk 2

不幸的是, lodashfilter方法与underscorefilter方法不同,不提供参数选项context,因为它只需要两个参数:

论据

  • 集合(数组|对象):要迭代的集合。
  • [predicate=_.identity] (Function):每次迭代调用的函数。

您可以做的是使用该.bind()方法将回调函数绑定到所需的context对象,如下所示:

_.filter(array, callback.bind(context));
Run Code Online (Sandbox Code Playgroud)

笔记:

请注意,Javascript 有自己的Array#filter()方法,它已经提供了此选项。