Array.prototype.copyWithin()
The copyWithin() method shallow copies part of an array
to another location in the same array and returns it without modifying its length.
Try it
Syntax
copyWithin(target)
copyWithin(target, start)
copyWithin(target, start, end)
Parameters
target-
Zero-based index at which to copy the sequence to. If negative,
targetwill be counted from the end.If
targetis at or greater thanarr.length, nothing will be copied. Iftargetis positioned afterstart, the copied sequence will be trimmed to fitarr.length. startOptional-
Zero-based index at which to start copying elements from. If negative,
startwill be counted from the end.If
startis omitted,copyWithinwill copy from index0. endOptional-
Zero-based index at which to end copying elements from.
copyWithincopies up to but not includingend. If negative,endwill be counted from the end.If
endis omitted,copyWithinwill copy until the last index (default toarr.length).
Return value
The modified array.
Description
The copyWithin() method works like C and C++'s memmove, and is a
high-performance method to shift the data of an Array. This especially
applies to the TypedArray method of the same
name. The sequence is copied and pasted as one operation; pasted sequence will have the
copied values even when the copy and paste region overlap.
The copyWithin() method is a mutating method. It does not alter the length of this, but it will change the content of this and create new properties, if necessary.
Array.prototype.copyWithin() is intentionally generic. It does not require that its this value be an Array object.
Examples
Using copyWithin
console.log([1, 2, 3, 4, 5].copyWithin(-2));
// [1, 2, 3, 1, 2]
console.log([1, 2, 3, 4, 5].copyWithin(0, 3));
// [4, 5, 3, 4, 5]
console.log([1, 2, 3, 4, 5].copyWithin(0, 3, 4));
// [4, 2, 3, 4, 5]
console.log([1, 2, 3, 4, 5].copyWithin(-2, -3, -1));
// [1, 2, 3, 3, 4]
console.log([].copyWithin.call({length: 5, 3: 1}, 0, 3));
// {0: 1, 3: 1, length: 5}
Specifications
| Specification |
|---|
| ECMAScript Language Specification # sec-array.prototype.copywithin |
Browser compatibility
BCD tables only load in the browser