| | |
| | | var global = require('../internals/global'); |
| | | var bind = require('../internals/function-bind-context'); |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var IndexedObject = require('../internals/indexed-object'); |
| | | var toObject = require('../internals/to-object'); |
| | | var toPropertyKey = require('../internals/to-property-key'); |
| | |
| | | var objectCreate = require('../internals/object-create'); |
| | | var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list'); |
| | | |
| | | var push = [].push; |
| | | var Array = global.Array; |
| | | var push = uncurryThis([].push); |
| | | |
| | | module.exports = function ($this, callbackfn, that, specificConstructor) { |
| | | var O = toObject($this); |
| | | var self = IndexedObject(O); |
| | | var boundFunction = bind(callbackfn, that, 3); |
| | | var boundFunction = bind(callbackfn, that); |
| | | var target = objectCreate(null); |
| | | var length = lengthOfArrayLike(self); |
| | | var index = 0; |
| | |
| | | key = toPropertyKey(boundFunction(value, index, O)); |
| | | // in some IE10 builds, `hasOwnProperty` returns incorrect result on integer keys |
| | | // but since it's a `null` prototype object, we can safely use `in` |
| | | if (key in target) push.call(target[key], value); |
| | | if (key in target) push(target[key], value); |
| | | else target[key] = [value]; |
| | | } |
| | | // TODO: Remove this block from `core-js@4` |
| | | if (specificConstructor) { |
| | | Constructor = specificConstructor(O); |
| | | if (Constructor !== Array) { |