mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-10 19:07:49 +00:00
Consolidate toPairs modules.
This commit is contained in:
@@ -1,16 +0,0 @@
|
|||||||
import arrayMap from './arrayMap.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The base implementation of `toPairs` and `toPairsIn` which creates an array
|
|
||||||
* of key-value pairs for `object` corresponding to the property names of `props`.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} object The object to query.
|
|
||||||
* @param {Array} props The property names to get values for.
|
|
||||||
* @returns {Object} Returns the key-value pairs.
|
|
||||||
*/
|
|
||||||
function baseToPairs(object, props) {
|
|
||||||
return arrayMap(props, key => [key, object[key]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default baseToPairs;
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
import baseToPairs from './.internal/baseToPairs.js';
|
|
||||||
import getTag from './.internal/getTag.js';
|
|
||||||
import mapToArray from './.internal/mapToArray.js';
|
|
||||||
import setToPairs from './.internal/setToPairs.js';
|
|
||||||
|
|
||||||
/** `Object#toString` result references. */
|
|
||||||
const mapTag = '[object Map]';
|
|
||||||
const setTag = '[object Set]';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a `toPairs` or `toPairsIn` function.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Function} keysFunc The function to get the keys of a given object.
|
|
||||||
* @returns {Function} Returns the new pairs function.
|
|
||||||
*/
|
|
||||||
function createToPairs(keysFunc) {
|
|
||||||
return object => {
|
|
||||||
const tag = getTag(object);
|
|
||||||
if (tag == mapTag) {
|
|
||||||
return mapToArray(object);
|
|
||||||
}
|
|
||||||
if (tag == setTag) {
|
|
||||||
return setToPairs(object);
|
|
||||||
}
|
|
||||||
return baseToPairs(object, keysFunc(object));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default createToPairs;
|
|
||||||
16
toPairs.js
16
toPairs.js
@@ -1,4 +1,7 @@
|
|||||||
import createToPairs from './.internal/createToPairs.js';
|
import arrayMap from './.internal/arrayMap.js';
|
||||||
|
import getTag from './.internal/getTag.js';
|
||||||
|
import mapToArray from './.internal/mapToArray.js';
|
||||||
|
import setToPairs from './.internal/setToPairs.js';
|
||||||
import keys from './keys.js';
|
import keys from './keys.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,6 +26,15 @@ import keys from './keys.js';
|
|||||||
* toPairs(new Foo);
|
* toPairs(new Foo);
|
||||||
* // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
|
* // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
|
||||||
*/
|
*/
|
||||||
const toPairs = createToPairs(keys);
|
function toPairs(object) {
|
||||||
|
const tag = getTag(object);
|
||||||
|
if (tag == '[object Map]') {
|
||||||
|
return mapToArray(object);
|
||||||
|
}
|
||||||
|
if (tag == '[object Set]') {
|
||||||
|
return setToPairs(object);
|
||||||
|
}
|
||||||
|
return arrayMap(keys(object), key => [key, object[key]]);
|
||||||
|
}
|
||||||
|
|
||||||
export default toPairs;
|
export default toPairs;
|
||||||
|
|||||||
16
toPairsIn.js
16
toPairsIn.js
@@ -1,4 +1,7 @@
|
|||||||
import createToPairs from './.internal/createToPairs.js';
|
import arrayMap from './.internal/arrayMap.js';
|
||||||
|
import getTag from './.internal/getTag.js';
|
||||||
|
import mapToArray from './.internal/mapToArray.js';
|
||||||
|
import setToPairs from './.internal/setToPairs.js';
|
||||||
import keysIn from './keysIn.js';
|
import keysIn from './keysIn.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,6 +26,15 @@ import keysIn from './keysIn.js';
|
|||||||
* toPairsIn(new Foo);
|
* toPairsIn(new Foo);
|
||||||
* // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
|
* // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
|
||||||
*/
|
*/
|
||||||
const toPairsIn = createToPairs(keysIn);
|
function toPairsIn(object) {
|
||||||
|
const tag = getTag(object);
|
||||||
|
if (tag == '[object Map]') {
|
||||||
|
return mapToArray(object);
|
||||||
|
}
|
||||||
|
if (tag == '[object Set]') {
|
||||||
|
return setToPairs(object);
|
||||||
|
}
|
||||||
|
return arrayMap(keysIn(object), key => [key, object[key]]);
|
||||||
|
}
|
||||||
|
|
||||||
export default toPairsIn;
|
export default toPairsIn;
|
||||||
|
|||||||
Reference in New Issue
Block a user