ES6 Array.copyWithin() 方法详解与实例

作者:青柠

时间:2026-10-22

浏览:384

本文详解ES6新增的Array.copyWithin()方法,用于将数组指定位置的元素复制并覆盖到同一数组的其他位置。通过解析target、start和end三个参数的含义及省略规则,结合具体代码示例说明正负索引的使用方式,帮助开发者掌握该数组内部操作技巧。

文章目录

copyWithin方法概述

ES6为Array新增了copyWithin方法,旨在操作当前数组自身,实现将指定位置的元素复制并覆盖至其他位置的功能。


Array.prototype.copyWithin(target, start = 0, end = this.length)

参数说明

该函数接收三个参数。

target:指定写入的起始索引位置。

start:指定复制源的起始索引,此参数可选,支持负数。

end:指定复制源的结束索引,此参数可选,支持负数,实际截取的结束位置为end-1。

基础用法示例

示例:

将索引3至5的元素(从0开始计数)复制并覆盖到从索引1开始的位置。

下方红色区域代表复制目标的起始位置,黄色区域代表复制源。


const arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr1.copyWithin(1, 3, 6)
console.log('%s', JSON.stringify(arr1))

运行结果:

[1,4,5,6,5,6,7,8,9,10,11]

省略参数的情况

start和end参数均可省略。

若省略start,默认值为0;若省略end,默认值为数组长度。

当目标位置不足以容纳所有复制元素时,仅覆盖可用部分。


const arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr2.copyWithin(3)
console.log('%s', JSON.stringify(arr2))

运行结果:

[1,2,3,1,2,3,4,5,6,7,8]

负数索引处理

start和end均支持负数,负数表示从数组末尾向前计数的索引。


const arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
arr3.copyWithin(3, -3, -2)
console.log('%s', JSON.stringify(arr3))

运行结果:

[1,2,3,9,5,6,7,8,9,10,11]

总结

以上内容介绍了ES6中Array.copyWithin()函数的用法实例,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章