mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-12 03:47:50 +00:00
Split map out.
This commit is contained in:
@@ -1,20 +0,0 @@
|
|||||||
/**
|
|
||||||
* A specialized version of `map` for arrays.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} [array] The array to iterate over.
|
|
||||||
* @param {Function} iteratee The function invoked per iteration.
|
|
||||||
* @returns {Array} Returns the new mapped array.
|
|
||||||
*/
|
|
||||||
function arrayMap(array, iteratee) {
|
|
||||||
let index = -1
|
|
||||||
const length = array == null ? 0 : array.length
|
|
||||||
const result = new Array(length)
|
|
||||||
|
|
||||||
while (++index < length) {
|
|
||||||
result[index] = iteratee(array[index], index, array)
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
export default arrayMap
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import baseEach from './baseEach.js'
|
|
||||||
import isArrayLike from '../isArrayLike.js'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The base implementation of `map`.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array|Object} collection The collection to iterate over.
|
|
||||||
* @param {Function} iteratee The function invoked per iteration.
|
|
||||||
* @returns {Array} Returns the new mapped array.
|
|
||||||
*/
|
|
||||||
function baseMap(collection, iteratee) {
|
|
||||||
let index = -1
|
|
||||||
const result = isArrayLike(collection) ? new Array(collection.length) : []
|
|
||||||
|
|
||||||
baseEach(collection, (value, key, collection) => {
|
|
||||||
result[++index] = iteratee(value, key, collection)
|
|
||||||
})
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
export default baseMap
|
|
||||||
38
map.js
38
map.js
@@ -1,23 +1,10 @@
|
|||||||
import arrayMap from './.internal/arrayMap.js'
|
|
||||||
import baseMap from './.internal/baseMap.js'
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an array of values by running each element in `collection` thru
|
* Creates an array of values by running each element of `array` thru `iteratee`.
|
||||||
* `iteratee`. The iteratee is invoked with three arguments:
|
* The iteratee is invoked with three arguments: (value, index, array).
|
||||||
* (value, index|key, collection).
|
|
||||||
*
|
*
|
||||||
* Many lodash methods are guarded to work as iteratees for methods like
|
* @since 5.0.0
|
||||||
* `every`, `filter`, `map`, `mapValues`, `reject`, and `some`.
|
* @category Array
|
||||||
*
|
* @param {Array} array The array to iterate over.
|
||||||
* The guarded methods are:
|
|
||||||
* `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
|
|
||||||
* `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
|
|
||||||
* `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
|
|
||||||
* `template`, `trim`, `trimEnd`, `trimStart`, and `words`
|
|
||||||
*
|
|
||||||
* @since 0.1.0
|
|
||||||
* @category Collection
|
|
||||||
* @param {Array|Object} collection The collection to iterate over.
|
|
||||||
* @param {Function} iteratee The function invoked per iteration.
|
* @param {Function} iteratee The function invoked per iteration.
|
||||||
* @returns {Array} Returns the new mapped array.
|
* @returns {Array} Returns the new mapped array.
|
||||||
* @example
|
* @example
|
||||||
@@ -28,13 +15,16 @@ import baseMap from './.internal/baseMap.js'
|
|||||||
*
|
*
|
||||||
* map([4, 8], square)
|
* map([4, 8], square)
|
||||||
* // => [16, 64]
|
* // => [16, 64]
|
||||||
*
|
|
||||||
* map({ 'a': 4, 'b': 8 }, square)
|
|
||||||
* // => [16, 64] (iteration order is not guaranteed)
|
|
||||||
*/
|
*/
|
||||||
function map(collection, iteratee) {
|
function map(array, iteratee) {
|
||||||
const func = Array.isArray(collection) ? arrayMap : baseMap
|
let index = -1
|
||||||
return func(collection, iteratee)
|
const length = array == null ? 0 : array.length
|
||||||
|
const result = new Array(length)
|
||||||
|
|
||||||
|
while (++index < length) {
|
||||||
|
result[index] = iteratee(array[index], index, array)
|
||||||
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
export default map
|
export default map
|
||||||
|
|||||||
29
mapObject.js
Normal file
29
mapObject.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/**
|
||||||
|
* Creates an array of values by running each property of `object` thru
|
||||||
|
* `iteratee`. The iteratee is invoked with three arguments: (value, key, object).
|
||||||
|
*
|
||||||
|
* @since 5.0.0
|
||||||
|
* @category Object
|
||||||
|
* @param {Object} object The object to iterate over.
|
||||||
|
* @param {Function} iteratee The function invoked per iteration.
|
||||||
|
* @returns {Array} Returns the new mapped array.
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* function square(n) {
|
||||||
|
* return n * n
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* map({ 'a': 4, 'b': 8 }, square)
|
||||||
|
* // => [16, 64] (iteration order is not guaranteed)
|
||||||
|
*/
|
||||||
|
function mapObject(object, iteratee) {
|
||||||
|
const props = Object.keys(object);
|
||||||
|
const result = new Array(props.length)
|
||||||
|
|
||||||
|
props.forEach((key, index) => {
|
||||||
|
result[index] = iteratee(object[key], key, object)
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
export default mapObject
|
||||||
Reference in New Issue
Block a user