ES6+ copyWithin()
1. 前言
2. 方法详情
2.1 基本语法
使用语法:
arr.copyWithin(target[, start[, end]])
参数解释:
参数 | 描述 |
---|---|
target | (必须,可以不填)开始替换数据的起始索引位置,复制元素到该位置;如果是负数时,target 将从末尾开始计算 |
start | (可选)开始复制的起始位置;如果是负数时,start 将从末尾开始计算。如果被省略,则会从 0 开始复制 |
end | (可选)开始复制元素的结束位置,不包括 end 位置;如果是负数,end 将从末尾开始计算 |
2.2 一个参数
当第一个参数是 0 或者没有参数时会复制整个数组,并从起始位置开始替换复制的数据。
var arr = [, , , , ];
arr.copyWithin(-); // [1, 2, 3, 1, 2]
上面的代码中,参数小于 0 时,则从末尾开始计算起始替换的位置,在上面的例子中起始的位置的值是 3,则从此项开始替换。
2.2 两个参数
第二个参数是,开始复制数组的起始位置,因为没有第三个参数,所以结尾是数组的最后一项。
var arr = [, , , , ];
arr.copyWithin(, ); // [4, 5, 3, 4, 5]
上面的代码中,起始位置是 3 则复制的数组是 [4, 5],替换的起始位置是 0,所以替换数组中的第一项和第二项的值。
var arr = [, , , , ];
arr.copyWithin(, -); // [3, 4, 5, 4, 5]
2.2 三个参数
第三个参数是开始复制元素的结束位置,但是不包括这个位置。
var arr = [, , , , ];
arr.copyWithin(, , ); // [1, 4, 3, 4, 5]
上面的代码中,可以知道复制的元素是数组中的 4,然后从第二个元素开始替换。
上面的代码中,第三个参数是负值,则从末尾开始计算。只有第三个参数是负数时,不会赋值任何元素,所以会返回原数组。这里要注意的是,在起始和结束位置之间有没有数据可以被复制,上面第二个例子,在 - 2 和 - 1 之间只有 4,所以会替换原数组中的起始位置的值。