在下划线(Underscore.js)中,可以使用_.reduce
函数来重新实现_.every
函数的功能。
_.reduce
函数是一个高阶函数,它接受一个集合(数组或对象)、一个迭代函数和一个初始值作为参数。迭代函数会依次对集合中的每个元素进行操作,并将结果累积到初始值中,最后返回累积的结果。
要在_.every
函数中使用_.reduce
,可以通过将初始值设置为true
,并在迭代函数中检查每个元素是否满足条件。如果有任何一个元素不满足条件,则将初始值设置为false
,并立即返回false
。
下面是一个示例代码:
_.every = function(collection, predicate) {
return _.reduce(collection, function(result, value) {
if (!result) {
return false;
}
return predicate(value);
}, true);
};
在这个示例中,collection
是要遍历的集合,predicate
是用于检查每个元素的函数。_.reduce
函数会遍历集合中的每个元素,并将结果累积到result
中。如果result
为false
,则表示已经找到一个不满足条件的元素,可以立即返回false
。否则,继续检查下一个元素。
使用示例:
var numbers = [1, 2, 3, 4, 5];
var allEven = _.every(numbers, function(num) {
return num % 2 === 0;
});
console.log(allEven); // 输出 false,因为有一个元素不是偶数
在这个示例中,_.every
函数会检查numbers
数组中的每个元素是否都是偶数。由于数组中有一个元素不是偶数,所以最终结果为false
。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云