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;
|