Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / lodash / array / flatten.js
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's 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;