1 var uncurryThis = require('../internals/function-uncurry-this');
2 var hasOwn = require('../internals/has-own-property');
3 var toIndexedObject = require('../internals/to-indexed-object');
4 var indexOf = require('../internals/array-includes').indexOf;
5 var hiddenKeys = require('../internals/hidden-keys');
7 var push = uncurryThis([].push);
9 module.exports = function (object, names) {
10 var O = toIndexedObject(object);
14 for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
15 // Don't enum bug & hidden keys
16 while (names.length > i) if (hasOwn(O, key = names[i++])) {
17 ~indexOf(result, key) || push(result, key);