mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-03 00:27:50 +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';
|
||||
|
||||
/**
|
||||
@@ -23,6 +26,15 @@ import keys from './keys.js';
|
||||
* toPairs(new Foo);
|
||||
* // => [['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;
|
||||
|
||||
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';
|
||||
|
||||
/**
|
||||
@@ -23,6 +26,15 @@ import keysIn from './keysIn.js';
|
||||
* toPairsIn(new Foo);
|
||||
* // => [['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;
|
||||
|
||||
Reference in New Issue
Block a user