跳到主要内容

Javascript 数组 copyWithin() 方法

copyWithin() 方法在给定数组中将数组元素从一个位置复制到另一个位置。

示例

let words = ["apple", "ball", "cat", "dog"];

// 将索引 0 处的元素复制到索引 3
words.copyWithin(3, 0);

// 修改原数组
console.log(words);

// 输出:
// [ 'apple', 'ball', 'cat', 'apple' ]

copyWithin() 语法

copyWithin() 方法的语法是:

arr.copyWithin(target, start, end);

这里,arr 是一个数组。

copyWithin() 参数

copyWithin() 方法可以接受三个参数:

  • target - 复制元素到的索引位置。
  • start(可选)- 开始复制元素的索引位置。如果省略,将从索引0开始复制。
  • end(可选)- 停止复制元素的索引位置(不包括此元素)。如果省略,将一直复制到最后一个索引。

注意事项:

  • 如果任何参数是负数,则索引将向后计数。例如,-1 代表最后一个元素,依此类推。

copyWithin() 返回值

  • 返回复制元素后的修改数组。

注意事项copyWithin() 方法:

  • 会覆盖原数组。
  • 不改变原数组的长度。

示例 1:使用 copyWithin() 方法

let numbers = [1, 2, 3, 4, 5];

// 将位于第 4 个索引的元素复制到第 0 个索引
numbers.copyWithin(0, 4);

// 修改原数组
console.log(numbers); // [ 5, 2, 3, 4, 5 ]

let letters = ["a", "b", "c", "d"];

// 将位于第 1 个索引的元素复制到第 2 个索引
letters.copyWithin(2, 1);

// 修改原数组
console.log(letters); // [ 'a', 'b', 'b', 'c' ]

输出

[ 5, 2, 3, 4, 5 ]
[ 'a', 'b', 'b', 'c' ]

在上面的示例中,我们使用了 copyWithin() 方法在数字和字母数组中将元素从一个索引复制到另一个索引。

numbers.copyWithin(0, 4) 将位于起始位置(即索引 4)的元素复制到目标位置(即索引 0),letters.copyWithin(2, 1) 将元素从索引1复制到索引2

示例 2:使用三个参数的 copyWithin()

let laptops = ["dell", "hp", "acer", "asus"];

// 将索引 2 到 4(不包括 4)的元素复制到索引 0
laptops.copyWithin(0, 2, 4);

// 修改原数组
console.log(laptops); // [ 'acer', 'asus', 'acer', 'asus' ]

输出

[ 'acer', 'asus', 'acer', 'asus' ]

在上面的示例中,我们在 copyWithin 方法中传递了三个参数——target、start 和 end。

laptops.copyWithin(0, 2, 4) 将从索引24(不包括索引 4)的元素复制到索引0,并将 laptops 数组修改为 [ 'acer', 'asus', 'acer', 'asus' ]

示例 3:使用负数参数的 copyWithin()

let evenNumbers = [2, 4, 6, 8];

// 传入负数索引值 -1 作为目标索引
evenNumbers.copyWithin(-1);

console.log(evenNumbers);

输出

[ 2, 4, 6, 2 ]

在这里,我们在 copyWithin() 方法中传入了一个负索引值 -1 作为 target 的值。

由于传入的参数是负数,该方法会向 后倒数 索引,因此目标索引是最后一个索引。

evenNumbers.copyWithin(-1) 将索引 0(默认起始值)处的元素复制到最后一个索引。