Javascript slice 方法是否返回浅拷贝?

2023-12-23

在 Mozilla 开发人员翻译的韩语中,lan​​g 说“切片方法”返回浅复制的新数组。

所以我测试了我的代码。

var animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

var t = animals.slice(2,4);
console.log(t);

t[0] = 'aaa';
console.log(t);
console.log(animals);

但是,如果 slice 方法返回浅数组,则动物数组应更改为 ['ant', 'bison', 'aaa', 'duck', 'elephant']。

为什么是浅拷贝?


slice不改变原始数组。 它返回原始数组中元素的浅表副本。

原始数组的元素被复制到返回的数组中,如下所示:

对于对象引用(而不是实际对象),slice 将对象引用复制到新数组中。原始数组和新数组都引用同一个对象。如果引用的对象发生更改,则新数组和原始数组都可以看到这些更改。

对于字符串、数字和布尔值(不是字符串、数字和布尔对象),slice 将值复制到新数组中。对一个数组中的字符串、数字或布尔值的更改不会影响另一个数组。 如果向任一数组添加新元素,则另一个数组不受影响。(source https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)

在您的情况下,数组由字符串组成,切片上的字符串将返回复制到数组的新字符串,因此是浅拷贝。 为了避免这种情况,请使用数组的对象形式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript slice 方法是否返回浅拷贝? 的相关文章

随机推荐

  • 将 div 浮动在右上角而不重叠同级标题

    有一个div and a h1在一个部分中 如何将 div 浮动在右上角而不与标题文本重叠 HTML 代码如下 section h1 some long long long long header a whole line 1 2 3 4
  • 数据表和服务器端处理 - 按需加载

    我已经使用 DataTables 构建了简单的表 并且成功连接了服务器端脚本以用数据填充我的表 在我的表格上方 有 2 个复选框和 2 个日期选择来指定过滤条件 当我的页面加载时 我会填充表格 因为在启动时数据表正在从服务器提取第一页数据
  • phpMyAdmin 配置在 Centos 6.5 上不起作用

    最近使用 yum 安装了 phpMyAdmin yum install phpmyadmin phpmyadmin 已安装到 usr share phpMyAdmin 但那里没有配置文件 有一个 config inc php 文件位于 et
  • 有没有办法将嵌套记录选择到表中?

    我在 Bigquery 中有一张表 T 其中包含简单字段和一个嵌套字段 我想有效地 select from T where 并将结果存储在新表 U 中 我希望 U 具有与 T 相同的架构 包括嵌套字段 有没有办法在 Bigquery 中执行
  • 定位 window.location.pathname

    我有一个类似于此的网址 www mysite com products 我用它来测试路径名 if products test window location gaq push trackPageview products landing 但
  • 更改 Google Cloud SQL 实例的 TCP 端口:3306

    如何更改 Google Cloud SQL 实例上的 TCP 端口 Google MySQL 服务器正在侦听端口 3306 这在我的环境中不起作用 端口号需要不同 我不知道如何在开发者控制台 云存储中更改此设置 我确实看到了文档网络和防火墙
  • C++ 成员变量的类型名

    是否可以获取成员变量的类型名 例如 struct C int value typedef typeof C value type something like that Thanks C 03 中没有 C 0x介绍decltype type
  • MapStruct:对象的映射列表,当对象由两个对象映射时

    假设我有这样的映射 Mapping source parentId target parent id Child map ChildDto dto Parent parent 现在我需要将 ChildDto 列表映射到 Child 列表 但
  • 从 BigQuery 导入到 R 时的特殊字符

    我有一个脚本用于废弃一些推文并将结果保存到 Google BigQuery 当我看到存储的数据时 像 这样的特殊字符会正确显示 但是当我尝试再次将数据导入 R 时 它们会被一些奇怪的字符替换 这是一个例子 Create df id twee
  • 如何在Word文档中插入Image对象作为图片

    所以我有这个函数来生成和返回我的图像 bmp 格式 我想把它放到一个word文档中 我在看InlineShapes AddPicture但只需要一个string参数 这要求我物理保存图片 然后将图片的路径作为参数提供给 AddPicture
  • 为什么这个 Spring AOP 切入点没有被触发?

    我正在编写非常基本的基于模式的 Spring AOP 这是 xml
  • 如何将一个大数组分割成更小的数组?

    给定一个大数组 如何将其拆分为较小的数组 并将较小数组的大小指定为方法的参数 例如 给定数字 Split 的实现会是什么 int numbers new int 7845 int sectionedNumbers numbers Split
  • 贵公司如何部署其软件?

    我目前正在进行一个短期研究项目 我工作的公司有一个非常繁重的发布流程 随着时间的推移 情况变得越来越糟 我们在每个版本中遇到越来越多的问题 这开始严重影响我们的交付时间表和每个版本的质量 我们提供了一个大型 SAAS 产品 该产品部署到互联
  • cudaFree 不释放内存

    下面的代码计算两个向量 a 和 b 的点积 正确的结果是8192 当我第一次运行它时 结果是正确的 然后 当我第二次运行它时 结果是之前的结果 8192 等等 1st iteration result 8192 2nd iteration
  • 缩写函数模板与带有转发引用参数的函数模板

    两者有什么区别带有转发参考参数的函数模板 template
  • 如何将文件上传请求从 Next.js API 传递到另一个 API?

    我正在尝试在 Next js 应用程序中裁剪图像 将其发送到应用程序中的 API 路由 最后发送到应用程序外部的 API 端点 如果我绕过 API 路由 它可以正常工作 但在通过它时就不行了 图像数据不再正确且无法处理 客户端 Next j
  • Laravel 5.4 中未找到“NumberFormatter”类

    我正在尝试使用 PHP 的 intl 扩展将金额转换为单词 例如 第1450章 一千四百五十 我正在使用 Laravel 5 4 它在 XAMPP 3 2 2 服务器上运行 PHP 5 6 24 正如类似问题中提到的 我已经启用了intl通
  • 在简单的 2d 游戏中实现重力

    我正在制作一个简单的游戏 比如马里奥 角色固定在一个位置 地面向左移动 给人一种角色移动的错觉 地面由左上角和右下角坐标定义的矩形块组成 private int surfaceMatrix 0 100 300 0 block having
  • 使用 Pyspark 时,您会从 Kryo 序列化器中受益吗?

    我读到 Kryo 序列化器在 Apache Spark 中使用时可以提供更快的序列化 不过 我通过 Python 使用 Spark 切换到 Kryo 序列化器后我还能获得显着的好处吗 Kryo不会造成重大影响PySpark因为它只是将数据存
  • Javascript slice 方法是否返回浅拷贝?

    在 Mozilla 开发人员翻译的韩语中 lan g 说 切片方法 返回浅复制的新数组 所以我测试了我的代码 var animals ant bison camel duck elephant var t animals slice 2 4