1var baseFlatten = require('../internal/baseFlatten'), 2 isIterateeCall = require('../internal/isIterateeCall'); 3 4/** 5 * Flattens a nested array. If `isDeep` is `true` the array is recursively 6 * flattened, otherwise it is only flattened a single level. 7 * 8 * @static 9 * @memberOf _ 10 * @category Array 11 * @param {Array} array The array to flatten. 12 * @param {boolean} [isDeep] Specify a deep flatten. 13 * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. 14 * @returns {Array} Returns the new flattened array. 15 * @example 16 * 17 * _.flatten([1, [2, 3, [4]]]); 18 * // => [1, 2, 3, [4]] 19 * 20 * // using `isDeep` 21 * _.flatten([1, [2, 3, [4]]], true); 22 * // => [1, 2, 3, 4] 23 */ 24function flatten(array, isDeep, guard) { 25 var length = array ? array.length : 0; 26 if (guard && isIterateeCall(array, isDeep, guard)) { 27 isDeep = false; 28 } 29 return length ? baseFlatten(array, isDeep) : []; 30} 31 32module.exports = flatten; 33 34