javascript - underscore.js _.every() 和 _.some() 没有回调

标签 javascript underscore.js

对于一项作业,我正在重新创建下划线的 _.every() 和 _.some() 函数来传递一组规范。但是,我无法让这些函数在没有回调函数的情况下工作。这是规范(两个功能的规范相同):

 it('should work when no callback is provided', function() { 
 expect(_.some([true, true, true])).to.be.true; 
 expect(_.some([true, true, false])).to.be.true; 
 expect(_.some([false, false, false])).to.be.false; 
}

这是代码:

// Determine whether all of the elements match a truth test. 
197   _.every = function(collection, iterator) { 
198     return _.reduce(collection, function(trueCheck, item) { 
199       if (!trueCheck) {return false;} 
200       if (item === true || iterator(item)){ 
201         return true; 
202       } 
203       else return false; 
204     }, true); 
205   }; 
206 

207   // Determine whether any of the elements pass a truth test. If no iterator is 
208   // provided, provide a default one 
209   _.some = function(collection, iterator) { 
210     var isAllFalse = _.every(collection, function(item) { 
211       return !iterator(item); 
212     }); 
213     if (isAllFalse === true) { 
214       return false; 
215     } 
216     return true; 
217   }; 
218 

如有任何建议,我们将不胜感激,谢谢!

最佳答案

我会使用纯 JavaScript:

var _ = _ || {};

_.every = function(collection, iterator) {
  for (var i = collection.length - 1; i >= 0; i--) {
    if (!collection[i]) return false;
  }
  return true;
};

_.some = function(collection, iterator) {
  for (var i = collection.length - 1; i >= 0; i--) {
    if (collection[i]) return true;
  }
  return false;
};

console.log(_.every([true, 'is', 1])); //true
console.log(_.every([true, 'is', false])); //false
console.log(_.some([null, '', 0, false])); //false
console.log(_.some([true, 'is', false])); //true

关于javascript - underscore.js _.every() 和 _.some() 没有回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32511543/

相关文章:

javascript - 如何使用 innerHTML 更新大小为 X 的数组?

javascript - Egghead 视频中的 React Redux 计数器示例

jquery - 如何实现更新两个 div 的 div 处理程序/调整器?

javascript - 下划线js :How to create a new object by combining values from two objects?

javascript - 初始化时对 Backbone 集合重新排序

javascript - CSS 或 JavaScript 以突出显示图像不透明度的特定区域

javascript - 启用/禁用下拉菜单 - Javascript

javascript - 如何将 github 存储库代码导入 mt 客户端 js?

javascript - Backbone/underscore.js json 到带有每个循环的模板

backbone.js - 如何使用 underscore.js 的 groupBy 按字符串属性对 Backbone.js 中的集合进行分组?