flatMapDeep.js 820 B

1234567891011121314151617181920212223242526272829303132
  1. var baseFlatten = require('./_baseFlatten'),
  2. map = require('./map');
  3. /** Used as references for various `Number` constants. */
  4. var INFINITY = 1 / 0;
  5. /**
  6. * This method is like `_.flatMap` except that it recursively flattens the
  7. * mapped results.
  8. *
  9. * @static
  10. * @memberOf _
  11. * @since 4.7.0
  12. * @category Collection
  13. * @param {Array|Object} collection The collection to iterate over.
  14. * @param {Array|Function|Object|string} [iteratee=_.identity]
  15. * The function invoked per iteration.
  16. * @returns {Array} Returns the new flattened array.
  17. * @example
  18. *
  19. * function duplicate(n) {
  20. * return [[[n, n]]];
  21. * }
  22. *
  23. * _.flatMapDeep([1, 2], duplicate);
  24. * // => [1, 1, 2, 2]
  25. */
  26. function flatMapDeep(collection, iteratee) {
  27. return baseFlatten(map(collection, iteratee), INFINITY);
  28. }
  29. module.exports = flatMapDeep;