diff --git a/.internal/baseToPairs.js b/.internal/baseToPairs.js deleted file mode 100644 index 481387753..000000000 --- a/.internal/baseToPairs.js +++ /dev/null @@ -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; diff --git a/.internal/createToPairs.js b/.internal/createToPairs.js deleted file mode 100644 index 25817b241..000000000 --- a/.internal/createToPairs.js +++ /dev/null @@ -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; diff --git a/toPairs.js b/toPairs.js index dcf413ac3..fbed879cd 100644 --- a/toPairs.js +++ b/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; diff --git a/toPairsIn.js b/toPairsIn.js index fdaed9e9d..ab5ad8bb1 100644 --- a/toPairsIn.js +++ b/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;