es6 copyWithin() 用法

news/2024/11/6 11:23:33/文章来源:https://www.cnblogs.com/pansidong/p/18529605

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决修改php.ini配置文件不生效的问题

公司禅道研发反馈任务创建的多了就报:Allowed memory size of 33554432 bytes exhausted (tried to alloate 3643528 bytes) in lib/base/front/front.class.php on line 1315 when visiting /index.php?m=execution&f=task&id=28;通过报错即可得知,php的memory_li…

Error:Kotlin: Module was compiled with an incompatible version of Kotlin.

idea 启动项目时报错 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.1.16. 解决方案(windows): 1、打开Kotlin面板 路径:File -> settings -> Languages & F…

JavaScript用法

JavaScript 用法HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。 Javascript 脚本代码可被放置在 HTML 页面的 <body> 和 <head> 部分中。<script> 标签 如需在 HTML 页面中插入 JavaScript,请使用 <script> 标…

在vite里面,使用linaria,css样式名混淆的问题

我们项目使用css in js来实现样式,借用了一个插件linaria。但是有一个问题,就是样式名会被混淆如下解决方法是,vite配置里面加一个 就可以了,结果如下

刚毕业,去做边缘业务,还有救吗?

有一些同时拿到了多个 Offer 的同学,会纠结于如何选择。其中有一些比较共性的问题,比如 “刚毕业,去做边缘业务,会不会影响后面的人生呢?”大家好,我是程序员鱼皮。今年的秋招已经接近尾声,我陆续收到了很多小伙伴们的 Offer 报喜。有一些同时拿到了多个 Offer 的同学,…

符合ISO26262的零部件级的软件测试解决方案

引言在功能安全的开发、测试过程中概念阶段的活动一般都是由主机厂负责,而从系统开发到单元实现则是由供应商负责,对于供应商所做的一系列测试通常称为零部件级测试。根据ISO 26262功能安全标准的划分,功能安全在零部件阶段的测试包括:软件单元测试、软件集成测试、硬件集成…

惊呆:where 1=1 可能严重影响性能,差了10多倍,快去排查你的 sql

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

鸿蒙项目实战(二):实现动态栅格布局

需求: 动态设置栅格布局子元素实现如下: 一、定义一个类,定义所有的子元素数据// 首页业务按钮可选项集合 export class HomeBussinessConfig{// 供选择的所有tab集合// 只读 静态static readonly buttons = [{title:功能一,icon:$r(app.media.icon_home_sale),},{title:功能…

Dynaseal-面向未来端侧llm agent的llm api key分发机制

为什么要有这个项目 试想一下,在未来 llm agent 在端侧全面铺开,但是目前调用大模型的方式通过了是一个拿到了就可以随便使用的 api-key?那用户岂不是从端侧的模型拿到了 api-key 就可以刷爆你的账单?!!!如果每个人的手机都跑着几个 agent,你还有一堆用户,那你服务器岂…

使用SeaTunnel从InfluxDB同步数据到Doris

本文介绍了如何使用SeaTunnel将数据从InfluxDB同步到Doris。通过SeaTunnel强大的数据集成功能,用户可以高效地将存储于InfluxDB中的时间序列数据传输至Doris,便于数据的访问与分析。版本信息: SeaTunnel 2.3.3 InfluxDB 2.7.6 Doris 2.1.3 rc09准备事项 SeaTunnel2.3.3的安装…

CMU_15445_P2_Extendible_Hash_Table

到Project2, 我们依然在处理数据库存储相关的部分, 从 Project1 中我们应该Get到两个概念:数据库底层数据操作的基本单元是 Page. buffer_pool_manager 是管理以及组织数据单元Page的工具, 在Project2的第一部分, 我们还新增了页面守护(PageGuard)的机制更加优雅的获取以及释放…

关于pacman更新时出现error: GPGME error: No data 解决方法

问题复现 基本上我隔一段时间就会出现这个问题,每一次都是在网络上寻找相关命令来解决,但是却不明白为什么会出现这个问题。 问题大概是这样的但是有一位博主详细的帮忙解答了问题,大概的意思是指:pacman 在更新数据库文件时会尝试下载每个仓库的 .db.sig 文件,这是数据库…