undercore.js-包含和减少之间的关系
Underscore.js--- the relationship between _.contains and _.reduce
有人能解释一下_.reduce函数是如何在_.control函数中工作的吗?为什么reduce函数的第三个参数为"false"?
_.contains = function(collection, target) {
return _.reduce(collection, function(wasFound, item) {
if (wasFound) {
return true;
}
return item === target;
}, false);
};
尽管这是_contains
的工作版本,但它不是一个非常有效的版本。它不是我在Github repo中看到的那个,也不是我在注释源中看到的另一个。但它应该起作用,以下是如何:CCD_ 3取三个参数。(好吧,有一个可选的第四个,但出于这些目的,我们可以忽略它。)第一个是要reduce的列表,第二个是reduce函数,第三个,你要问的,是累加器的初始值。
reduce
在每一步后第一次传递递减函数两个值:上一步的输出和列表中的下一项。该函数的任务是返回下一个值,该值在列表的末尾也是最终输出。但是在第一步中没有要传递的先前值。这就是第三个参数的作用;它被用来启动这个过程。因此,对于这个contains
函数,第一步的虚先前值是false
。在每个步骤中,函数都会检查以前的值。如果是true
,则函数只返回true
。如果正在测试的列表值与搜索值匹配,则返回true
。否则返回false
。
请注意,这个规则意味着一旦您达到true
,它将保持为true
。
我之所以说这不太有效,是因为我们很可能知道列表中包含检查第一个项目的值。提到的其他实现只是在这一点上返回true
。这将继续处理整个列表。当然,它实际上并没有测试更多的值,因为它只是继续返回true
值,但如果列表很长,当我们提前知道答案时,这仍然是相当浪费的。
- JSDoc:模块和名称空间之间的关系是什么
- html5视频播放器和视频js之间的关系
- 两个集合mongodb之间的关系
- angular2@组件和类之间的关系
- 在Knockout.js模型中创建项之间的关系
- Angular 2,在没有直接关系的两个组件之间共享一个对象
- 视图和路由器之间的主干关系
- JavaScriptV5中的绑定和JQuery之间有任何关系吗
- 高图 - 分组/近似后保持多个系列之间的关系
- 父关系指令和子关系指令之间的绑定
- 绘制的节点和Google图表/可视化中的数据节点之间的关系
- 如何解决存储中操作之间的依赖关系
- 负载角度依赖关系之间的区别是什么,共享模块的最佳方式是什么
- 如何管理原始对象之间的数据依赖关系
- undercore.js-包含和减少之间的关系
- 如何在不让web组件的原型进入全局命名空间的情况下维护它们之间的依赖关系
- 具有表之间关系的AngularJS资源
- 在js中维护元素组之间关系的最佳实践
- 描述JavaScript中成员和容器之间关系的最佳术语
- 在reactjs中给出babel和node.js之间关系的细节