当前位置: 首页 > news >正文

JS数组复制方法及注意事项

在 JavaScript 中,直接赋值数组会导致引用传递(修改一个会影响另一个),因此需要创建数组的副本。以下是几种常见的浅拷贝方法:

1. 使用 slice() 方法

javascript

const originalArray = [1, 2, 3];
const copiedArray = originalArray.slice();

2. 使用 concat() 方法

javascript

const originalArray = [1, 2, 3];
const copiedArray = originalArray.concat();

3. 使用展开运算符(ES6+)

javascript

const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];

4. 使用 Array.from()(ES6+)

javascript

const originalArray = [1, 2, 3];
const copiedArray = Array.from(originalArray);

注意事项:

  • 浅拷贝:上述方法均为浅拷贝,适用于元素是基本类型的数组。
    如果元素是对象或嵌套数组,修改内层内容仍会互相影响:

    javascript

    const original = [{ a: 1 }, [2]];
    const copied = [...original];
    copied[0].a = 999; // 原数组的 `{ a: 1 }` 也会被修改!
  • 深拷贝:若需要完全独立的副本(深拷贝),可以通过 JSON 方法实现(但有局限性,如无法处理函数、undefined 等):

    javascript

    const original = [{ a: 1 }, [2]];
    const deepCopied = JSON.parse(JSON.stringify(original));
http://www.dtcms.com/a/100618.html

相关文章:

  • [BJDCTF2020]Mark loves cat [git泄露][变量覆盖漏洞]
  • Java单列集合[Collection]
  • 【Vue3知识】Vue3集成富文本编辑器TinyMCE
  • Croe 11.0建模入门笔记:1.2 快捷键
  • C++的四种类型转换
  • 走进 detect.tflite:树莓派目标检测背后的核心模型详解
  • rust学习笔记21-闭包
  • 多人协同进行qt应用程序开发应该注意什么2?
  • H5S USC 宇视LiteAPI协议支持
  • C#从入门到精通(4)
  • CPU飙高系统反应慢怎么排查?
  • AI赋能职教革新:生成式人工智能(GAI)认证重构技能人才培养新范式
  • 告别枯燥工作,走向自动化
  • 人形机器人行业研究
  • 1304-习题1_4-课后习题-高等数学
  • Cesium知识总结(一)
  • 洛谷P3128 [USACO15DEC] Max Flow P
  • RUST学习笔记1:Rust开发环境搭建(Winodws11 x64)
  • QSettings用法实战(相机配置文件的写入和读取)
  • 第三届全国技能大赛广西选拔赛 《软件测试》项目样题
  • C语言深度解析:从零到系统级开发的完整指南
  • SpringBoot3+EasyExcel通过WriteHandler动态实现表头重命名
  • DAY 31 leetcode 142--链表.环形链表
  • java容器
  • 如何在不同的分辨率均能显示出清晰的字体?
  • 创作领域“<em >足</em><em>球</em><em>彩</em><em>票</em><em>计</em><em>划
  • 设计模式分类与定义(高软55)
  • xtuner微调大模型教程
  • SkyWalking+Springboot实战
  • 自定义C语言变量转换库