复制数组而不链接到它[重复]

Posted

技术标签:

【中文标题】复制数组而不链接到它[重复]【英文标题】:Copy an array without linking to it [duplicate] 【发布时间】:2016-09-14 12:18:20 【问题描述】:
var ProtVar = function(arr)
    this.gr1 = [];
    this.gr2 = [];
    this.arr = arr;
    return this;

ProtVar.prototype.setArrs = function()
    this.gr1 = this.arr;
    this.gr2 = this.arr;
    return this;

ProtVar.prototype.shiftGr1 = function()
    this.gr1.shift();
    return this;

ProtVar.prototype.showData = function()
    console.log("gr1 = ", this.gr1.length, this.gr1);
    console.log("gr2 = ", this.gr2.length, this.gr2);
    console.log("arr = ", this.arr.length, this.arr);    
    return this;   

var protVar = new ProtVar([1,2,3,4]).setArrs().shiftGr1().showData();

我应该如何复制数组而不链接到同一个数组?

我想出了如何使用slice(0); 执行此操作,请参见下文。

ProtVar.prototype.setArrs = function()
    this.gr1 = this.arr.slice(0);
    this.gr2 = this.arr.slice(0);
    return this;

这是正确的做法吗?

【问题讨论】:

你为什么要这样做? 在这种情况下(基元数组)这是一种可行的方法 【参考方案1】:

至少有 4 种 (!) 克隆数组的主要方法:

循环 构造函数 切片/拼接 连续

请看this回答

【讨论】:

谢谢,抱歉重复的问题:/

以上是关于复制数组而不链接到它[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python - 重复numpy数组而不复制数据

执行链接而不刷新页面[重复]

Mongoose – 将对象相互链接而不重复

从 C 数组(列优先)转换为犰狳矩阵(arma::mat)而不复制

使用 JavaScript 打开链接新窗口(不是选项卡)而不输入两次 URL? [复制]

jquery:更改URL地址而不重定向? [复制]