JavaScript метод copyWithin()

Определение и применение

JavaScript метод copyWithin() позволяет скопировать элементы массива (в зависимости от их индекса) и вставить их в тот же массив, заменяя определенные элементы массива (в зависимости от их индекса), длина массива при этом не изменяется. Работу метода показывает пример «Как скопировать диапазон внутри массива».

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2016 года.

Показать браузеры
Совместимостьjavascript.builtins.Array.copyWithin
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
copyWithin✓45✓12✓32✓32✓9✓45✓32✓32✓9✓5.0✓45✓9

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
array.copyWithin(target);
array.copyWithin(target, start);
array.copyWithin(target, start, end);

Спецификация

ECMAScript: Array.prototype.copyWithin.

Значения параметров

Параметры copyWithin()
Параметр Описание
target Начальный индекс позиции целевого элемента, куда будут копироваться элементы массива. Обязательное значение.
Допускается использование отрицательных значений, в этом случае индекс, с которого будет произведено копирование будет рассчитан по следующей формуле: length (длина массива) + target.
start Целое число, определяющее индекс массива, с которого будут скопированы элементы массива. Необязательное значение, по умолчанию 0.
Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено копирование будет рассчитан по следующей формуле: length (длина массива) + start.
end Целое число, определяющее индекс массива, перед которым заканчивается копирование элементов (сам end не включается). Необязательное значение, если не указано, то будут скопированы все элементы от начальной позиции (start) и до конца массива.
Допускается использование отрицательных значений, в этом случае индекс до которого будет произведено копирование будет рассчитан по следующей формуле: length (длина массива) + end.

Возвращаемое значение

Тот же изменённый массив; длина не меняется.

Особенности

Конечный индекс end не включается. Пропущенный start равен 0; отрицательные индексы отсчитываются от конца и ограничиваются диапазоном массива. При пересечении диапазонов исходные значения копируются корректно; пустые позиции тоже переносятся.

Примеры, попробуйте сами

Как скопировать диапазон внутри массива

Измените target, start или end. Каждый вызов работает со свежей копией: сравните диапазон источника и результат.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Каждый вызов начинает со свежей копии, чтобы сравнивать границы на одинаковых данных.
var x = [1, 2, 3, 'a', 'b', 'c'] // инициализируем переменную, содержащую массив

console.log(x.slice().copyWithin(0, 3)) // возвращаемое значение ["a", "b", "c", "a", "b", "c"]
console.log(x.slice().copyWithin(3, 0)) // возвращаемое значение [1, 2, 3, 1, 2, 3]
console.log(x.slice().copyWithin(-2, 3)) // возвращаемое значение [1, 2, 3, "a", "a", "b"]
console.log(x.slice().copyWithin(0, 3, 4)) // возвращаемое значение ["a", 2, 3, "a", "b", "c"]
console.log(x.slice().copyWithin(0, 3, 5)) // возвращаемое значение ["a", "b", 3, "a", "b", "c"]
console.log(x.slice().copyWithin(0, -2, -1)) // возвращаемое значение ["b", 2, 3, "a", "b", "c"]