flatten-deep.js 646 B

1234567891011121314151617181920212223242526
  1. var isArray = require('../type/is-array');
  2. /**
  3. * Flattens `array` a single level deep.
  4. *
  5. * @param {Array} arr The array to flatten.
  6. * @param {Array} result The array to return.
  7. * @return {Array} Returns the new flattened array.
  8. * @example
  9. *
  10. * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]
  11. */
  12. var flattenDeep = function flattenDeep(arr) {
  13. var result = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  14. if (!isArray(arr)) {
  15. result.push(arr);
  16. } else {
  17. for (var i = 0; i < arr.length; i += 1) {
  18. flattenDeep(arr[i], result);
  19. }
  20. }
  21. return result;
  22. };
  23. module.exports = flattenDeep;