| var DESCRIPTORS = require('../internals/descriptors'); |
| var objectKeys = require('../internals/object-keys'); |
| var toIndexedObject = require('../internals/to-indexed-object'); |
| var propertyIsEnumerable = require('../internals/object-property-is-enumerable').f; |
| |
| // `Object.{ entries, values }` methods implementation |
| var createMethod = function (TO_ENTRIES) { |
| return function (it) { |
| var O = toIndexedObject(it); |
| var keys = objectKeys(O); |
| var length = keys.length; |
| var i = 0; |
| var result = []; |
| var key; |
| while (length > i) { |
| key = keys[i++]; |
| if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) { |
| result.push(TO_ENTRIES ? [key, O[key]] : O[key]); |
| } |
| } |
| return result; |
| }; |
| }; |
| |
| module.exports = { |
| // `Object.entries` method |
| // https://tc39.github.io/ecma262/#sec-object.entries |
| entries: createMethod(true), |
| // `Object.values` method |
| // https://tc39.github.io/ecma262/#sec-object.values |
| values: createMethod(false) |
| }; |