(dir)
| 1476 | return results; |
| 1477 | }; |
| 1478 | function createReduce(dir) { |
| 1479 | function iterator(obj, iteratee, memo, keys, index, length) { |
| 1480 | for (; index >= 0 && index < length; index += dir) { |
| 1481 | var currentKey = keys ? keys[index] : index; |
| 1482 | memo = iteratee(memo, obj[currentKey], currentKey, obj); |
| 1483 | } |
| 1484 | return memo; |
| 1485 | } |
| 1486 | |
| 1487 | return function(obj, iteratee, memo, context) { |
| 1488 | iteratee = optimizeCb(iteratee, context, 4); |
| 1489 | var keys = !isArrayLike(obj) && _.keys(obj), |
| 1490 | length = (keys || obj).length, |
| 1491 | index = dir > 0 ? 0 : length - 1; |
| 1492 | if (arguments.length < 3) { |
| 1493 | memo = obj[keys ? keys[index] : index]; |
| 1494 | index += dir; |
| 1495 | } |
| 1496 | return iterator(obj, iteratee, memo, keys, index, length); |
| 1497 | }; |
| 1498 | } |
| 1499 | _.reduce = _.foldl = _.inject = createReduce(1); |
| 1500 | _.reduceRight = _.foldr = createReduce(-1); |
| 1501 | _.find = _.detect = function(obj, predicate, context) { |
no test coverage detected