2016-05-18 5 views
0
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; 
} 

Это правильный способ сделать это?

+0

Зачем вам это делать? –

+0

В этом случае (массив примитивов) это один жизнеспособный способ – Andreas

ответ

2

Есть по крайней мере, 4 основных способа клонировать массив (!):

  • петлю
  • Конструктор
  • срез/сращивания
  • CONCAT

См. this ответ

+0

спасибо, извините за дублированный вопрос: / – WouldBeNerd