es6 copyWithin() 用法---知道就行,感觉不怎么实用

copyWithin() 是 JavaScript 数组方法之一,允许你在数组中将一部分元素复制到另一个位置。这个方法会修改原始数组,并且返回更新后的数组。

语法:

array.copyWithin(target, start, end);
  • target:必需。表示目标位置的索引,从该位置开始将元素复制过去。如果 target 是负值,表示从数组的末尾倒数的位置开始。
  • start:可选。表示开始复制的起始索引(包含该位置)。如果省略,则默认为 0
  • end:可选。表示复制的结束索引(不包含该位置)。如果省略,则默认为数组的长度。

注意:

  • copyWithin() 是一种浅拷贝(shallow copy),意味着它不会创建新数组,而是直接在原数组中操作。
  • startend 可以是负数,表示从数组的末尾开始计数。

示例:

1. 基本用法

let arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, 3);
console.log(arr); // 输出: [4, 5, 3, 4, 5]
  • 在这个例子中,copyWithin(0, 3) 表示将从索引 3 开始的元素(即 4, 5)复制到索引 0 开始的位置,因此更新后的数组变成 [4, 5, 3, 4, 5]

2. 使用 startend

let arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, 2, 4);
console.log(arr); // 输出: [3, 4, 3, 4, 5]
  • 这里,copyWithin(0, 2, 4) 表示将数组索引 2 到 3 之间的元素(即 3, 4)复制到索引 0 开始的位置,因此更新后的数组变成 [3, 4, 3, 4, 5]

3. 使用负值索引

let arr = [1, 2, 3, 4, 5];
arr.copyWithin(-3, -5, -2);
console.log(arr); // 输出: [1, 2, 3, 1, 2]
  • 这里,copyWithin(-3, -5, -2) 表示将从倒数第 5 个元素到倒数第 2 个元素的部分(即 1, 2)复制到倒数第 3 个位置开始。因此,更新后的数组变成 [1, 2, 3, 1, 2]

4. 完整的 copyWithin() 示例

let arr = [10, 20, 30, 40, 50];
arr.copyWithin(1, 3, 5);
console.log(arr); // 输出: [10, 40, 50, 40, 50]
  • copyWithin(1, 3, 5) 表示从索引 3 到 4 的元素(即 40, 50)复制到索引 1 开始的位置。因此,更新后的数组变成 [10, 40, 50, 40, 50]

特点:

  1. 修改原数组copyWithin() 方法会直接修改原数组,而不会返回新数组。如果需要保持原数组不变,可以先创建数组的副本。
  2. 不改变数组长度:此方法不会改变数组的长度,只会改变元素的位置。
  3. 支持负值索引startend 都可以使用负数索引,表示从数组末尾开始计算。

使用场景:

  • 循环数组元素:如果想要在数组中循环使用某部分的元素,可以用 copyWithin() 来避免额外的数组复制和合并操作。
  • 简化数组操作:它可以用来在数组内部进行快速的部分替换或重排,而无需通过更复杂的 slice()concat() 等操作。

总结:

copyWithin() 是一个简单而高效的方法,适用于在数组中复制和移动元素。它不创建新数组,而是直接在原数组上修改,可以用于高效的数组元素操作。

posted @   盘思动  阅读(92)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2018-11-06 array_merge 优化调整
点击右上角即可分享
微信分享提示