如何创建数组的副本? [复制]

Posted

技术标签:

【中文标题】如何创建数组的副本? [复制]【英文标题】:How to create copy of array? [duplicate] 【发布时间】:2017-01-14 06:46:37 【问题描述】:

我有数组:

var array = ["a", "b", "c"];

我需要将此数组保存到另一个变量中

var save = array;

现在我需要从save 第一个索引进行拼接,但是当我尝试时,索引会从两个数组中删除。

var array = ["a", "b", "c"];
var save = array;

save.splice(0, 1);
console.log(array);
console.log(save);

【问题讨论】:

试试array.slice() 阅读值类型与引用类型,了解发生这种情况的原因。 【参考方案1】:

您需要使用Array#slice 复制数组,否则save 会保留对原始数组的引用(两个变量都指向同一个数组)。

var save = array.slice();

var array = ["a", "b", "c"];
var save = array.slice();

save.splice(0, 1);
console.log(array);
console.log(save);

【讨论】:

@Dave :很高兴为您提供帮助【参考方案2】:

如果是没有循环引用的平面数组,可以使用

var copied_array = JSON.parse(JSON.stringify(original_array));

这也适用于扁平物体。

【讨论】:

以上是关于如何创建数组的副本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何返回数组的副本? [复制]

如何在排序之前保存数组的副本? [复制]

如何复制或复制数组数组

如何制作一个快速的类对象数组的深层副本

关于 python 何时自动创建数组副本的文档

js 操作方法