簡體   English   中英

以角度2復制對象數組

[英]Copy array of Objects in angular 2

我有兩個名為'people'和'persons2'的數組,'persons2'數組將是'people'數組的副本,但問題是當我復制它時,我想要更改第二個數組,第一個數組是也在改變。 這是我的代碼:

  export class AppComponent {

  persons = [
    {
      name:'David',
      lname:'Jeu'
    }
  ];

  persons2=[...this.persons];

  constructor(){
      console.log(this.persons[0]);
      this.persons2[0].name='Drake';
      console.log(this.persons[0]);

      console.log(this.persons2[0]);
  }

}

但問題是當我復制它,並且我想要更改第二個數組時,第一個數組也在改變

這是因為兩個數組中的對象共享相同的引用。 要執行深層復制,請嘗試以下操作:

let persons2 = person.map(x => Object.assign({}, x));

要么

let person2 = JSON.parse(JSON.stringify(person));

在你的情況下,數組都指的是相同的內存,通常稱為淺拷貝。

在此輸入圖像描述

您可以制作第一個數組的深層副本,然后更改第二個數組。 這對第一個陣列沒有影響。

 let persons = [{ name: 'David', lname: 'Jeu' }]; let persons2 = JSON.parse(JSON.stringify(persons)); persons2[0].age = 29; console.log(persons) console.log(persons2) 

對於這些類型的操作,通常使用Lodash Clonedeep是明智的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM