Files
lodash/toPairsIn.js
2017-01-11 10:22:56 -08:00

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 keysIn from './keysIn.js';
/**
* Creates an array of own and inherited 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 entriesIn
* @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;
*
* toPairsIn(new Foo);
* // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
*/
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;