1
Для выполнения задания, я работаю над повторным созданием функций _.every() и _.some() подчеркивания для передачи набор спецификаций. Однако я не могу заставить функции работать без функции обратного вызова. Вот спецификации (спецификации является одинаковым для обеих функций):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
Любой совет будет весьма признателен, спасибо!
Что именно проблема? Как именно это «не работает»? –
Привет, Феликс, я не совсем уверен, но мои функции, как написано, не проходят проверку спецификаций, работают ли они, если функция обратного вызова не предоставляется. – joanx737
Первое, что нужно сделать - это отладить ваш код. Что вы сделали в этом отношении? В любом случае, посмотрите на 'item === true || итератор (элемент) 'и подумайте о том, что он делает. –