更改数组中json的数组元素正在更改angular2中的其余json数组元素

时间:2017-09-25 12:55:47

标签: javascript angularjs deep-copy

这是数组变量

let packageitems=

    [
      {  
      "packageid":1,

      "items":[  
         {  
            "itemid":"1",
            "name":"abc"
         },
         {  
            "itemid":"2",
            "name":"cdr"
         }
      ]
     },
     {  
      "packageid":2,
      "items":[  
         {  
            "itemid":"1",
            "name":"abc"
         },
         {  
            "itemid":"2",
            "name":"xyz"
         }
      ]
     }
    ]

在angular typescript中我有一个功能:

updatePackageitem(newitem){
    let objIndex = this.packageitems.findIndex(obj => obj.packageid==newitem.packageid);
    Object.assign(this.packageitems[objIndex] , newitem);
}

newitem json类似于items数组不同 当我使用Object.assign分配时newitem数组元素获得this.packageitems的所有其余json的副本,即使在获得objIndex权限之后

newitem =

      {  
      "packageid":2,
      "items":[  
         {  
            "itemid":"1",
            "name":"def"
         },
         {  
            "itemid":"2",
            "name":"pqr"
         }
      ]
     }

0 个答案:

没有答案