You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					39 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					39 lines
				
				1.2 KiB
			| 
											3 years ago
										 | var arrayPush = require('./_arrayPush'), | ||
|  |     isFlattenable = require('./_isFlattenable'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * The base implementation of `_.flatten` with support for restricting flattening. | ||
|  |  * | ||
|  |  * @private | ||
|  |  * @param {Array} array The array to flatten. | ||
|  |  * @param {number} depth The maximum recursion depth. | ||
|  |  * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. | ||
|  |  * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. | ||
|  |  * @param {Array} [result=[]] The initial result value. | ||
|  |  * @returns {Array} Returns the new flattened array. | ||
|  |  */ | ||
|  | function baseFlatten(array, depth, predicate, isStrict, result) { | ||
|  |   var index = -1, | ||
|  |       length = array.length; | ||
|  | 
 | ||
|  |   predicate || (predicate = isFlattenable); | ||
|  |   result || (result = []); | ||
|  | 
 | ||
|  |   while (++index < length) { | ||
|  |     var value = array[index]; | ||
|  |     if (depth > 0 && predicate(value)) { | ||
|  |       if (depth > 1) { | ||
|  |         // Recursively flatten arrays (susceptible to call stack limits).
 | ||
|  |         baseFlatten(value, depth - 1, predicate, isStrict, result); | ||
|  |       } else { | ||
|  |         arrayPush(result, value); | ||
|  |       } | ||
|  |     } else if (!isStrict) { | ||
|  |       result[result.length] = value; | ||
|  |     } | ||
|  |   } | ||
|  |   return result; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = baseFlatten; |