diff options
Diffstat (limited to 'node_modules/core-js/internals/array-copy-within.js')
| -rw-r--r-- | node_modules/core-js/internals/array-copy-within.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/node_modules/core-js/internals/array-copy-within.js b/node_modules/core-js/internals/array-copy-within.js new file mode 100644 index 0000000..70c8edb --- /dev/null +++ b/node_modules/core-js/internals/array-copy-within.js @@ -0,0 +1,29 @@ +'use strict'; +var toObject = require('../internals/to-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); + +var min = Math.min; + +// `Array.prototype.copyWithin` method implementation +// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = toLength(O.length); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; |
