mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-01 15:57:48 +00:00
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
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';
|
|
|
|
/**
|
|
* Creates an array of own enumerable string keyed-value pairs for `object`
|
|
* which can be consumed by `fromPairs`. If `object` is a map or set, its
|
|
* entries are returned.
|
|
*
|
|
* @since 4.0.0
|
|
* @alias entries
|
|
* @category Object
|
|
* @param {Object} object The object to query.
|
|
* @returns {Array} Returns the key-value pairs.
|
|
* @example
|
|
*
|
|
* function Foo() {
|
|
* this.a = 1;
|
|
* this.b = 2;
|
|
* }
|
|
*
|
|
* Foo.prototype.c = 3;
|
|
*
|
|
* toPairs(new Foo);
|
|
* // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
|
|
*/
|
|
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;
|