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 方法是否返回浅拷贝? 的相关文章

  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • 定义 js-xlsx 单元格范围

    我正在尝试使用 js xlsx 读取 Excel 值 我可以使用以下代码从工作簿工作表中获取单元格值 if typeof require undefined XLSX require xlsx var workbook XLSX readF
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • ajaxStop() 不触发

    这是不起作用的代码 document ajaxStop function this unbind ajaxStop prevent running again when other calls finish Display everythi
  • 限制可选 DOM 复选框

    我试图限制用户可以选择的复选框数量 这些复选框是为数组中的每个项目生成的 DOM 输入对象 我目前对此没有运气 因此非常感谢任何帮助 谢谢 在这里小提琴 http jsfiddle net vVxM2 222 http jsfiddle n
  • 无法实例化模块 [$injector:unpr] 未知提供程序:$routeProvider

    我从 AngularJS 升级时收到此错误1 0 7 to 1 2 0rc1 ngRoute 模块不再是核心的一部分angular js文件 如果您继续使用 routeProvider 那么您现在需要包括angular route js在你
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • ToggleClass 动画 jQuery?

    我的网站上有一个部分 当用户单击时我希望它展开 我正在使用 jQuerytoggleClass为了这 expandable function e e preventDefault this closest article toggleCla
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • 如何检测元素内容何时发生变化

    我正在寻找一种方法来监视元素内动态填充 无页面重新加载 内容 以便我可以将类添加到另一个元素 到目前为止我有这个 HTML div class message container div class messages error span
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • 如何使用 jQuery 或 JavaScript 聚焦 或 标签?

    for var i 0 i
  • 将 RequireJS 与遗留代码结合使用

    我正在处理一个非常大的项目 该项目使用 包含带有脚本标记的 javascript 文件的旧版 JSP 页面 使用其他 javascript 模块而不使用 RequireJS 的骨干模型和视图 现在 我们希望开始将 RequireJS 与 j
  • 强制输入数字小数位

    我想强制
  • 无法使用 HTML 设置未定义 jQuery UI 自动完成的属性“_renderItem”

    我使用以下代码将 jQuery UI 自动完成项呈现为 HTML 这些项目在自动完成控件中正确呈现 但我不断收到此 JavaScript 错误并且无法移动过去 Firefox 无法转换 JavaScript 参数 Chrome 无法设置未定

随机推荐

  • 将 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