Проверьте underscore.js , который предоставляет вам методы _.any
и _.all
(также известные как _.some
и _.every
), которые будут работать в любой основной среде JS.Вот как они реализованы в CoffeeScript в underscore.coffee :
_.some = (obj, iterator, context) ->
iterator ||= _.identity
return obj.some iterator, context if nativeSome and obj.some is nativeSome
result = false
_.each obj, (value, index, list) ->
_.breakLoop() if (result = iterator.call(context, value, index, list))
result
_.every = (obj, iterator, context) ->
iterator ||= _.identity
return obj.every iterator, context if nativeEvery and obj.every is nativeEvery
result = true
_.each obj, (value, index, list) ->
_.breakLoop() unless (result = result and iterator.call(context, value, index, list))
result
(Они зависят от _.each
, который является простым методом итерации, и _.breakLoop
, который простовыдает исключение.)