JavaScript copyWithin 方法
最后修改于 2025 年 4 月 4 日
在本文中,我们将展示如何使用 JavaScript 中的 copyWithin 方法复制数组元素。
复制数组元素
copyWithin 方法在同一个数组中复制一系列数组元素。它修改原始数组并返回修改后的数组。此方法不会更改数组的长度。
该方法最多接受三个参数:目标位置、起始索引和可选的结束索引。元素从起始索引复制到但不包括结束索引。如果省略,则结束索引默认为数组的长度。
此方法对于在数组内有效地移动元素而无需创建新数组很有用。它就地执行操作,使其对大型数组具有内存效率。负索引从数组的末尾开始计数。
基本的 copyWithin 示例
以下示例演示了 copyWithin 方法的基本用法。
const arr = [1, 2, 3, 4, 5]; arr.copyWithin(0, 3); console.log(arr);
我们从索引 3 开始将元素复制到数组的开头。位置 0 和 1 处的原始元素将被覆盖。数组长度保持不变。
$ node main.js [ 4, 5, 3, 4, 5 ]
使用起始和结束索引复制
copyWithin 方法可以指定用于复制的起始和结束索引。
const letters = ['a', 'b', 'c', 'd', 'e']; letters.copyWithin(1, 2, 4); console.log(letters);
我们将元素从索引 2 复制到 4(不包括 4)到位置 1。只有元素“c”和“d”被复制。位置 1 和 2 处的原始元素将被覆盖。
$ node main.js [ 'a', 'c', 'd', 'd', 'e' ]
使用负索引
copyWithin() 方法接受从数组末尾开始计数的负索引。
const nums = [1, 2, 3, 4, 5]; nums.copyWithin(-2, -4, -1); console.log(nums);
负索引从数组的末尾向后计数。在这里,我们从索引 -4 (1) 到 -1 (4) 复制元素到位置 -2 (3)。位置 3 和 4 处的原始元素将被覆盖。
$ node main.js [ 1, 2, 3, 2, 3 ]
在数组的一部分内复制
copyWithin 方法可以定位数组的特定部分。
const colors = ['red', 'green', 'blue', 'yellow', 'purple']; colors.copyWithin(2, 0, 2); console.log(colors);
我们将前两个元素('red','green')复制到位置 2。位置 2 和 3 处的原始元素将被覆盖。数组长度保持不变。
$ node main.js [ 'red', 'green', 'red', 'green', 'purple' ]
复制重叠范围
copyWithin 方法正确处理重叠范围。
const data = [1, 2, 3, 4, 5]; data.copyWithin(1, 0, 3); console.log(data);
当源和目标范围重叠时,该方法会复制元素,就像首先复制到一个临时数组一样。在这里,元素 1、2、3 被复制到位置 1。位置 1、2 和 3 处的原始元素将被覆盖。
$ node main.js [ 1, 1, 2, 3, 5 ]
来源
在本文中,我们演示了如何使用 copyWithin() 方法在 JavaScript 中复制数组元素。
作者
列出 所有 JS 数组函数。