_createBaseEach.js
 1  var isArrayLike = require('./isArrayLike');
 2  
 3  /**
 4   * Creates a `baseEach` or `baseEachRight` function.
 5   *
 6   * @private
 7   * @param {Function} eachFunc The function to iterate over a collection.
 8   * @param {boolean} [fromRight] Specify iterating from right to left.
 9   * @returns {Function} Returns the new base function.
10   */
11  function createBaseEach(eachFunc, fromRight) {
12    return function(collection, iteratee) {
13      if (collection == null) {
14        return collection;
15      }
16      if (!isArrayLike(collection)) {
17        return eachFunc(collection, iteratee);
18      }
19      var length = collection.length,
20          index = fromRight ? length : -1,
21          iterable = Object(collection);
22  
23      while ((fromRight ? index-- : ++index < length)) {
24        if (iteratee(iterable[index], index, iterable) === false) {
25          break;
26        }
27      }
28      return collection;
29    };
30  }
31  
32  module.exports = createBaseEach;