copywithin是javascript数组原地复制方法,用于在不改变数组长度的前提下将[start, end)区间元素复制到target起始位置,支持负索引,按原始值一次性读取写入,直接修改原数组并返回其引用。

copyWithin 是 JavaScript 数组的原生方法,用于**在当前数组内部复制一段元素并粘贴到另一位置**,不改变数组长度,也不新增或删除元素,只做“就地移动”或“覆盖式复制”。
copyWithin 的基本语法和参数含义
调用形式为:arr.copyWithin(target, start, end),三个参数都是索引(可为负数):
- target:复制后要填入的起始位置(目标起始索引),超出范围会自动截断
- start:被复制段的起始索引(含),默认为 0
- end:被复制段的结束索引(不含),默认为数组长度;负数表示从末尾倒数
常见使用场景与示例
比如把后两个元素复制到开头:
const arr = [1, 2, 3, 4, 5];arr.copyWithin(0, 3); // → [4, 5, 3, 4, 5]
这里 start=3(即元素 4),end 默认为 5,所以复制 [4, 5],从索引 0 开始覆盖。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
再比如向右平移一位(类似“滚动”):
const arr = [10, 20, 30, 40];arr.copyWithin(1, 0, 3); // → [10, 10, 20, 30]
复制索引 0~3(不含)即 [10,20,30],贴到索引 1 起的位置,原索引 1 处开始被覆盖。
注意重叠复制时的行为
当 target 和被复制区间有重叠时,copyWithin 按**原始值复制**,不是边读边写。也就是说,它先读取整个源区间,再整体写入目标位置,不会因中间覆盖而影响后续读取。
arr.copyWithin(2, 0, 3); // → [1, 2, 1, 2, 3]
复制 [1,2,3] 到索引 2 开始的位置,即使索引 2、3 原来存着 3、4,也不会干扰源数据读取。
实用技巧与避坑点
- 所有参数都支持负索引:如
copyWithin(-2, -4, -1)表示从倒数第 4 位到倒数第 1 位(不含)复制到倒数第 2 位起 - 如果
target >= arr.length或start >= arr.length,操作无效(无复制发生) - 如果
end ,复制空片段,数组不变 - 该方法直接修改原数组,返回的是修改后的数组(方便链式调用,但本质仍是原数组引用)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










