foop
Version:
interfaces that describe their intentions.
42 lines (36 loc) • 3.49 kB
JavaScript
var isArrayLike = require('../../is/arrayLike')
var isNill = require('../../is/nullOrUndefined')
var baseForOwn = require('./baseForOwn')
/**
* The base implementation of `forEach`.
* @since 5.0.0-beta.6
* @memberOf loop
*
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @return {Array|Object} Returns `collection`.
*
* @see https://github.com/lodash/lodash/blob/master/.internal/baseEach.js
*
*/
function baseEach(collection, iteratee) {
if (isNill(collection)) {
return collection
}
else if (!isArrayLike(collection)) {
return baseForOwn(collection, iteratee)
}
// @TODO toObj, length
var length = collection.length
var iterable = Object(collection)
var index = -1
while (++index < length) {
// stop when they return false
if (iteratee(iterable[index], index, iterable) === false) {
break
}
}
return collection
}
module.exports = baseEach
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUVhY2guanMiLCJzb3VyY2VzIjpbImJhc2VFYWNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vLi4vaXMvYXJyYXlMaWtlJylcbmNvbnN0IGlzTmlsbCA9IHJlcXVpcmUoJy4uLy4uL2lzL251bGxPclVuZGVmaW5lZCcpXG5jb25zdCBiYXNlRm9yT3duID0gcmVxdWlyZSgnLi9iYXNlRm9yT3duJylcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZm9yRWFjaGAuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKiBAbWVtYmVyT2YgbG9vcFxuICpcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJuIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvLmludGVybmFsL2Jhc2VFYWNoLmpzXG4gKlxuICovXG5mdW5jdGlvbiBiYXNlRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICBpZiAoaXNOaWxsKGNvbGxlY3Rpb24pKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb25cbiAgfVxuICBlbHNlIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICByZXR1cm4gYmFzZUZvck93bihjb2xsZWN0aW9uLCBpdGVyYXRlZSlcbiAgfVxuXG4gIC8vIEBUT0RPIHRvT2JqLCBsZW5ndGhcbiAgY29uc3QgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGhcbiAgY29uc3QgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbilcbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIC8vIHN0b3Agd2hlbiB0aGV5IHJldHVybiBmYWxzZVxuICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb2xsZWN0aW9uXG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUVhY2hcbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0FBQ2pEQSxHQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQztBQUNsREEsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWMxQyxTQUFTLFFBQVEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFO0VBQ3RDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQ3RCLE9BQU8sVUFBVTtHQUNsQjtPQUNJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDakMsT0FBTyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztHQUN4Qzs7O0VBR0RBLEdBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU07RUFDaENBLEdBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztFQUNuQ0MsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7O0VBRWQsT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7O0lBRXZCLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO01BQ3hELEtBQUs7S0FDTjtHQUNGOztFQUVELE9BQU8sVUFBVTtDQUNsQjs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFFBQVE7In0=