mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-06 09:47:48 +00:00
Add _.flatMapDeep and _.flatMapDepth.
This commit is contained in:
118
lodash.js
118
lodash.js
@@ -1456,23 +1456,24 @@
|
||||
* `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
|
||||
* `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
|
||||
* `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
|
||||
* `flatten`, `flattenDeep`, `flattenDepth`, `flip`, `flow`, `flowRight`,
|
||||
* `fromPairs`, `functions`, `functionsIn`, `groupBy`, `initial`, `intersection`,
|
||||
* `intersectionBy`, `intersectionWith`, `invert`, `invertBy`, `invokeMap`,
|
||||
* `iteratee`, `keyBy`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`,
|
||||
* `matches`, `matchesProperty`, `memoize`, `merge`, `mergeWith`, `method`,
|
||||
* `methodOf`, `mixin`, `negate`, `nthArg`, `omit`, `omitBy`, `once`, `orderBy`,
|
||||
* `over`, `overArgs`, `overEvery`, `overSome`, `partial`, `partialRight`,
|
||||
* `partition`, `pick`, `pickBy`, `plant`, `property`, `propertyOf`, `pull`,
|
||||
* `pullAll`, `pullAllBy`, `pullAllWith`, `pullAt`, `push`, `range`,
|
||||
* `rangeRight`, `rearg`, `reject`, `remove`, `rest`, `reverse`, `sampleSize`,
|
||||
* `set`, `setWith`, `shuffle`, `slice`, `sort`, `sortBy`, `splice`, `spread`,
|
||||
* `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
|
||||
* `thru`, `toArray`, `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`,
|
||||
* `transform`, `unary`, `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`,
|
||||
* `uniqWith`, `unset`, `unshift`, `unzip`, `unzipWith`, `update`, `values`,
|
||||
* `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, `zipObject`,
|
||||
* `zipObjectDeep`, and `zipWith`
|
||||
* `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
|
||||
* `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
|
||||
* `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
|
||||
* `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
|
||||
* `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
|
||||
* `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
|
||||
* `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
|
||||
* `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
|
||||
* `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
|
||||
* `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
|
||||
* `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
|
||||
* `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
|
||||
* `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
|
||||
* `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
|
||||
* `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
|
||||
* `unshift`, `unzip`, `unzipWith`, `update`, `values`, `valuesIn`, `without`,
|
||||
* `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, `zipObject`, `zipObjectDeep`,
|
||||
* and `zipWith`
|
||||
*
|
||||
* The wrapper methods that are **not** chainable by default are:
|
||||
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
|
||||
@@ -7587,27 +7588,6 @@
|
||||
return new LodashWrapper(this.value(), this.__chain__);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is the wrapper version of `_.flatMap`.
|
||||
*
|
||||
* @name flatMap
|
||||
* @memberOf _
|
||||
* @category Seq
|
||||
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
|
||||
* @returns {Object} Returns the new `lodash` wrapper instance.
|
||||
* @example
|
||||
*
|
||||
* function duplicate(n) {
|
||||
* return [n, n];
|
||||
* }
|
||||
*
|
||||
* _([1, 2]).flatMap(duplicate).value();
|
||||
* // => [1, 1, 2, 2]
|
||||
*/
|
||||
function wrapperFlatMap(iteratee) {
|
||||
return this.map(iteratee).flatten();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the next value on a wrapped object following the
|
||||
* [iterator protocol](https://mdn.io/iteration_protocols#iterator).
|
||||
@@ -7938,9 +7918,9 @@
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array of flattened values by running each element in `collection`
|
||||
* through `iteratee` and concating its result to the other mapped values.
|
||||
* The iteratee is invoked with three arguments: (value, index|key, collection).
|
||||
* Creates a flattened array of values by running each element in `collection`
|
||||
* through `iteratee` and flattening the mapped results. The iteratee is invoked
|
||||
* with three arguments: (value, index|key, collection).
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
@@ -7962,6 +7942,56 @@
|
||||
return baseFlatten(map(collection, iteratee), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is like `_.flatMap` except that it recursively flattens the
|
||||
* mapped results.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.7.0
|
||||
* @category Collection
|
||||
* @param {Array|Object} collection The collection to iterate over.
|
||||
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
|
||||
* @returns {Array} Returns the new flattened array.
|
||||
* @example
|
||||
*
|
||||
* function duplicate(n) {
|
||||
* return [[[n, n]]];
|
||||
* }
|
||||
*
|
||||
* _.flatMapDeep([1, 2], duplicate);
|
||||
* // => [1, 1, 2, 2]
|
||||
*/
|
||||
function flatMapDeep(collection, iteratee) {
|
||||
return baseFlatten(map(collection, iteratee), INFINITY);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is like `_.flatMap` except that it recursively flattens the
|
||||
* mapped results up to `depth` times.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.7.0
|
||||
* @category Collection
|
||||
* @param {Array|Object} collection The collection to iterate over.
|
||||
* @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
|
||||
* @param {number} [depth=1] The maximum recursion depth.
|
||||
* @returns {Array} Returns the new flattened array.
|
||||
* @example
|
||||
*
|
||||
* function duplicate(n) {
|
||||
* return [[[n, n]]];
|
||||
* }
|
||||
*
|
||||
* _.flatMapDepth([1, 2], duplicate, 2);
|
||||
* // => [[1, 1], [2, 2]]
|
||||
*/
|
||||
function flatMapDepth(collection, iteratee, depth) {
|
||||
depth = depth === undefined ? 1 : toInteger(depth);
|
||||
return baseFlatten(map(collection, iteratee), depth);
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterates over elements of `collection` invoking `iteratee` for each element.
|
||||
* The iteratee is invoked with three arguments: (value, index|key, collection).
|
||||
@@ -11938,8 +11968,7 @@
|
||||
/**
|
||||
* Creates an object with the same keys as `object` and values generated by
|
||||
* running each own enumerable string keyed property of `object` through
|
||||
* `iteratee`. The iteratee is invoked with three arguments:
|
||||
* (value, key, object).
|
||||
* `iteratee`. The iteratee is invoked with three arguments: (value, key, object).
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
@@ -14896,6 +14925,8 @@
|
||||
lodash.fill = fill;
|
||||
lodash.filter = filter;
|
||||
lodash.flatMap = flatMap;
|
||||
lodash.flatMapDeep = flatMapDeep;
|
||||
lodash.flatMapDepth = flatMapDepth;
|
||||
lodash.flatten = flatten;
|
||||
lodash.flattenDeep = flattenDeep;
|
||||
lodash.flattenDepth = flattenDepth;
|
||||
@@ -15387,7 +15418,6 @@
|
||||
lodash.prototype.at = wrapperAt;
|
||||
lodash.prototype.chain = wrapperChain;
|
||||
lodash.prototype.commit = wrapperCommit;
|
||||
lodash.prototype.flatMap = wrapperFlatMap;
|
||||
lodash.prototype.next = wrapperNext;
|
||||
lodash.prototype.plant = wrapperPlant;
|
||||
lodash.prototype.reverse = wrapperReverse;
|
||||
|
||||
Reference in New Issue
Block a user