1 |
3a515b92
|
cagy
|
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;
|