当前位置: 首页 > 面试题库 >

JavaScript按值复制数组

岑俊明
2023-03-14
问题内容

将JavaScript中的数组复制到另一个数组时:

var arr1 = ['a','b','c'];
var arr2 = arr1;
arr2.push('d');  //Now, arr1 = ['a','b','c','d']

我意识到这arr2是指与相同的数组arr1,而不是新的独立数组。如何复制数组以获取两个独立的数组?


问题答案:

用这个:

var newArray = oldArray.slice();

基本上,该slice()操作会克隆数组并返回对新数组的引用。

另请注意:

对于引用,字符串和数字(​​而不是实际对象),将 slice()
对象引用复制到新数组中。
原始数组和新数组都引用同一对象。如果引用的对象发生更改,则更改对新数组和原始数组均可见。

字符串和数字之类的基元是不可变的,因此无法更改字符串或数字。



 类似资料:
  • 问题内容: 我试图制作一个数组的独立副本,但无法获得一个。出于效率原因,我无法使用for循环将其逐个整数复制。还有其他办法吗?这是我的代码: 问题答案: 看方法。喜欢,

  • 问题内容: 我注意到程序中存在一个错误,发生该错误的原因是因为熊猫似乎是通过引用熊猫数据框而不是通过值进行复制。我知道不可变对象将始终通过引用传递,但pandas数据帧不是不可变的,因此我不明白为什么它通过引用传递。谁能提供一些信息? 谢谢!安德鲁 问题答案: Python中的所有函数都是“按引用传递”,没有“按值传递”。如果要显式复制pandas对象,请尝试。

  • 我有一个简单的课程生成器,允许教师为各种类别进行选择,这些选择ID被收集并分组在一起,我希望在最后将它们全部作为课程计划返回。 然而,我有一个奇怪的问题,我无法解决。我的Vuex存储正确显示选择,但是我的getter复制了我的所有数组。 选择完成后,我的Vuex商店通过Vue.js开发工具插件显示了这样的内容: 状态和获取者: 我从文件: 现在,我的控制台输出是: 问题是,我的其他获得者都不是这样

  • 我想迭代/生成一个无限大的IntStream或LongStream,并用提供的最大值来限制它们,而不是用操作的元素计数来限制它们,例如获得前20个正数偶数: 我需要的是用一个最大值来限制流。例如,如果我需要1000以下2的所有幂

  • 我在同一数组中有一对多关系的数据。该组织是按级别建立的。元素的父元素总是比其自身高一级,并由parentId引用。 如何从该数组中获取多级数组?最高级别的元素将是主数组,其子元素在javascript中作为子数组? 预期产出将是 谢谢

  • 我想按日期对对象数组进行排序,但问题是它们的日期是这种格式-。 这里是此数组中一个对象的示例 我必须按修改日期或创建日期对它们进行排序!