foop
Version:
interfaces that describe their intentions.
68 lines (63 loc) • 5.37 kB
JavaScript
var ENV_COMPAT = require('../env/compat')
var hasOwnProperty = require('../util/hasOwnProperty')
/**
* Converts an object into an array of key, value arrays. Only the object's
* own properties are used.
* Note that the order of the output array is not guaranteed to be consistent
* across different JS platforms.
*
* @since 5.0.0-beta.5
* @memberOf cast
*
* @param {Object|Array} obj The object to extract from
* @return {Array<string, *>} An array of key, value arrays from the object's own properties.
*
* @alias objToArray
* @alias objectToArray
* @alias objToArr
* @alias toEntries
*
* @func
* @fork v0.4.0
* @category Object
* @sig {String: *} -> [[String,*]]
*
* @TODO compat env version
*
* {@link https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill mozilla-object-entries}
* {@link https://github.com/lodash/lodash/blob/master/fromPairs.js lodash-from-pairs}
* {@link https://github.com/ramda/ramda/blob/master/src/pair.js ramda-to-pairs}
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L637 underscore-to-pairs}
* @see {@link mozilla-object-entries}
* @see {@link underscore-to-pairs}
* @see {@link ramda-to-pairs}
* @see {@link lodash-from-pairs}
* @see fromPairs
* @see util/hasOwnProperty
* @see cast/mapToArray
*
* @example
*
* toPairs({a: 1, b: 2, c: 3})
* //=> [['a', 1], ['b', 2], ['c', 3]]
*
* toPairs([])
* //=> [['a', 1], ['b', 2], ['c', 3]]
*
*/
module.exports = Object.entries
if (ENV_COMPAT) {
// if (!module.exports),
// if there is no Object.entries,
// but we want to force compat so
module.exports = (function toPairs(obj) {
var pairs = []
for (var prop in obj) {
if (hasOwnProperty(prop, obj)) {
pairs[pairs.length] = [prop, obj[prop]]
}
}
return pairs
})
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9QYWlycy5qcyIsInNvdXJjZXMiOlsidG9QYWlycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFTlZfQ09NUEFUID0gcmVxdWlyZSgnLi4vZW52L2NvbXBhdCcpXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL3V0aWwvaGFzT3duUHJvcGVydHknKVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBpbnRvIGFuIGFycmF5IG9mIGtleSwgdmFsdWUgYXJyYXlzLiBPbmx5IHRoZSBvYmplY3Qnc1xuICogb3duIHByb3BlcnRpZXMgYXJlIHVzZWQuXG4gKiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBvdXRwdXQgYXJyYXkgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgY29uc2lzdGVudFxuICogYWNyb3NzIGRpZmZlcmVudCBKUyBwbGF0Zm9ybXMuXG4gKlxuICogQHNpbmNlIDUuMC4wLWJldGEuNVxuICogQG1lbWJlck9mIGNhc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gZXh0cmFjdCBmcm9tXG4gKiBAcmV0dXJuIHtBcnJheTxzdHJpbmcsICo+fSBBbiBhcnJheSBvZiBrZXksIHZhbHVlIGFycmF5cyBmcm9tIHRoZSBvYmplY3QncyBvd24gcHJvcGVydGllcy5cbiAqXG4gKiBAYWxpYXMgb2JqVG9BcnJheVxuICogQGFsaWFzIG9iamVjdFRvQXJyYXlcbiAqIEBhbGlhcyBvYmpUb0FyclxuICogQGFsaWFzIHRvRW50cmllc1xuICpcbiAqIEBmdW5jXG4gKiBAZm9yayB2MC40LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBzaWcge1N0cmluZzogKn0gLT4gW1tTdHJpbmcsKl1dXG4gKlxuICogQFRPRE8gY29tcGF0IGVudiB2ZXJzaW9uXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9lbnRyaWVzI1BvbHlmaWxsIG1vemlsbGEtb2JqZWN0LWVudHJpZXN9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvZnJvbVBhaXJzLmpzIGxvZGFzaC1mcm9tLXBhaXJzfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1kYS9yYW1kYS9ibG9iL21hc3Rlci9zcmMvcGFpci5qcyByYW1kYS10by1wYWlyc31cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi9tYXN0ZXIvdW5kZXJzY29yZS5qcyNMNjM3IHVuZGVyc2NvcmUtdG8tcGFpcnN9XG4gKiBAc2VlIHtAbGluayBtb3ppbGxhLW9iamVjdC1lbnRyaWVzfVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS10by1wYWlyc31cbiAqIEBzZWUge0BsaW5rIHJhbWRhLXRvLXBhaXJzfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWZyb20tcGFpcnN9XG4gKiBAc2VlIGZyb21QYWlyc1xuICogQHNlZSB1dGlsL2hhc093blByb3BlcnR5XG4gKiBAc2VlIGNhc3QvbWFwVG9BcnJheVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICB0b1BhaXJzKHthOiAxLCBiOiAyLCBjOiAzfSlcbiAqICAgICAgLy89PiBbWydhJywgMV0sIFsnYicsIDJdLCBbJ2MnLCAzXV1cbiAqXG4gKiAgICAgIHRvUGFpcnMoW10pXG4gKiAgICAgIC8vPT4gW1snYScsIDFdLCBbJ2InLCAyXSwgWydjJywgM11dXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5lbnRyaWVzXG5cbmlmIChFTlZfQ09NUEFUKSB7XG4gIC8vIGlmICghbW9kdWxlLmV4cG9ydHMpLFxuICAvLyBpZiB0aGVyZSBpcyBubyBPYmplY3QuZW50cmllcyxcbiAgLy8gYnV0IHdlIHdhbnQgdG8gZm9yY2UgY29tcGF0IHNvXG4gIG1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHRvUGFpcnMob2JqKSB7XG4gICAgY29uc3QgcGFpcnMgPSBbXVxuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBvYmopIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShwcm9wLCBvYmopKSB7XG4gICAgICAgIHBhaXJzW3BhaXJzLmxlbmd0aF0gPSBbcHJvcCwgb2JqW3Byb3BdXVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYWlyc1xuICB9KVxufVxuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQzNDQSxHQUFLLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ3hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU87O0FBRS9CLElBQUksVUFBVSxFQUFFOzs7O0VBSWQsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUN0Q0EsR0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFOztJQUVoQixLQUFLQyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtNQUNwQixJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDeEM7S0FDRjs7SUFFRCxPQUFPLEtBQUs7R0FDYixDQUFDO0NBQ0g7In0=