1 var baseFlatten = require('../internal/baseFlatten'),
2 isIterateeCall = require('../internal/isIterateeCall');
5 * Flattens a nested array. If `isDeep` is `true` the array is recursively
6 * flattened, otherwise it's only flattened a single level.
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.
17 * _.flatten([1, [2, 3, [4]]]);
18 * // => [1, 2, 3, [4]]
21 * _.flatten([1, [2, 3, [4]]], true);
24 function flatten(array, isDeep, guard) {
25 var length = array ? array.length : 0;
26 if (guard && isIterateeCall(array, isDeep, guard)) {
29 return length ? baseFlatten(array, isDeep) : [];
32 module.exports = flatten;