JavaScript · 数组中的copyWithin方法

copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度

—— MDN

简介

以下部分内容来自 MDN

语法:

js
arr.copyWithin(target[, start[, end]])

参数

target

0 为基底的索引,复制序列到该位置。

如果是负数,target  将从末尾开始计算。如果 target 大于等于 arr.length,将会不发生拷贝。如果 targetstart 之后,复制的序列将被修改以符合 arr.length

start

0 为基底的索引,开始复制元素的起始位置。

如果是负数,start  将从末尾开始计算。如果  start  被忽略,copyWithin  将会从 0 开始复制。

end

0 为基底的索引,开始复制元素的结束位置。

copyWithin  将会拷贝到该位置,但不包括 end 这个位置的元素

如果是负数, end  将从末尾开始计算。如果 end 被忽略,copyWithin 方法将会一直复制至数组结尾(默认为 arr.length)。

例子

源码

js
const array1 = ['a', 'b', 'c', 'd', 'e']
// copy to index 0 the element at index 3
console.log(array1.copyWithin(0, 3, 4))
// expected output: Array ["d", "b", "c", "d", "e"]
// copy to index 1 all elements from index 3 to the end
console.log(array1.copyWithin(1, 3))
// expected output: Array ["d", "d", "e", "d", "e"]

可视化

上图将 target 位置用红色的部分表示,被复制的元素为蓝色。

  1. a = array1[0] ,所在位置是将要被替换的 target 位置。d = array1[3]是复制的起始元素,复制结束在array1[4]之前。复制后a的位置被 d所取代。
  2. b = array1[1] ,所在位置是将要被替换的 target 位置,d = array1[3]是复制的起始元素,复制没有指定结束位置,所以一直复制到数组末尾。复制后a的位置被 'd','e'所取代。
%sveltekit.body%