JavaScript метод copyWithin()
Определение и применение
JavaScript метод copyWithin() позволяет скопировать элементы массива (в зависимости от их индекса) и
вставить их в тот же массив, заменяя определенные элементы массива (в зависимости от их индекса), длина массива при
этом не изменяется. Работу метода показывает пример
«Как скопировать диапазон внутри массива».
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2016 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
copyWithin | 45 | 12 | 32 | 32 | 9 | 45 | 32 | 32 | 9 | 5.0 | 45 | 9 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
array.copyWithin(target);
array.copyWithin(target, start);
array.copyWithin(target, start, end);Спецификация
ECMAScript: Array.prototype.copyWithin.
Значения параметров
| Параметр | Описание |
|---|---|
target |
Начальный индекс позиции целевого элемента, куда будут копироваться элементы массива.
Обязательное значение. Допускается использование отрицательных значений, в этом случае индекс, с которого будет произведено копирование будет рассчитан по следующей формуле: length (длина массива) + target.
|
start |
Целое число, определяющее индекс массива, с которого будут скопированы элементы массива.
Необязательное значение, по умолчанию 0. Допускается использование отрицательных значений, в этом случае индекс с которого будет произведено копирование будет рассчитан по следующей формуле: length (длина массива) + start.
|
end |
Целое число, определяющее индекс массива, перед которым заканчивается копирование элементов (сам end не
включается).
Необязательное значение, если не указано, то будут скопированы все элементы от начальной
позиции (start) и до конца массива. Допускается использование отрицательных значений, в этом случае индекс до которого будет произведено копирование будет рассчитан по следующей формуле: length (длина массива) + end.
|
Возвращаемое значение
Тот же изменённый массив; длина не меняется.
Особенности
Конечный индекс end не включается. Пропущенный start равен 0; отрицательные индексы
отсчитываются от конца и ограничиваются диапазоном массива. При пересечении диапазонов исходные значения копируются
корректно; пустые позиции тоже переносятся.
Примеры, попробуйте сами
Как скопировать диапазон внутри массива
Измените target, start или end. Каждый вызов работает со свежей копией: сравните диапазон источника и результат.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// Каждый вызов начинает со свежей копии, чтобы сравнивать границы на одинаковых данных.
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"]