【发布时间】:2013-10-30 02:53:42
【问题描述】:
我想用_.filter 实现类似_.first 的东西,也就是说,拥有一组元素,我想获得第一个(如果存在)与真值测试(迭代器)匹配的元素。
例如,给定如下数组:
var arr = [{a: 1}, {a: 5}, {a: 9}, {a: 11}, {a: 15}]
我想获得第一个(也是唯一一个)与我的自定义函数匹配的元素:
_.filterFirst(arr, function(el) { return el.a > 10; }); // make it
到目前为止:
_.first(arr) == {a:1}
_.filter(arr, function(...)) == [{a:11}, {a:15}]
有没有比_.first(_.filter(arr, iterator))更好的干净解决方案?
【问题讨论】:
-
看一下查找功能underscorejs.org/#find
-
为什么不只是 _.filter(arr, iterator)[0]
-
@levi 因为它消耗的 CPU 超出了应有的水平。
-
为什么不只是 _.filter(arr, iterator)[0]
-
@RobertRavikumar 你听说过性能吗?还是算法复杂度? Here你去。顺便说一句,这个问题已经 5 岁了
标签: javascript collections functional-programming underscore.js