Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80742 views
1
var 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
*/
24
function 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
32
module.exports = flatten;
33
34