我有一个包含两个对象的数组:
genericItems: Item[] = [];
backupData: Item[] = [];
我正在使用genericItems
数据填充我的HTML表格。该表格是可修改的。有一个重置按钮可以撤消使用backUpData
所做的所有更改。这个数组由一个服务填充:
getGenericItems(selected: Item) {
this.itemService.getGenericItems(selected).subscribe(
result => {
this.genericItems = result;
});
this.backupData = this.genericItems.slice();
}
我的想法是,用户的更改将会反映在第一个数组中,而第二个数组可以用作重置操作的备份。我面临的问题是,当用户修改表格(<code>genericItems[]</code>)时,第二个数组<code>backupData</code>也会被修改。
这是怎么发生的,如何防止这种情况?
slice()
会从另一个数组创建一个新的对象,我猜是这样... - Arunslice
函数会将数组中的每个引用复制到一个新的数组中。因此,旧数组和新数组实际上是不同的,但其中的对象完全相同。所以这应该与使用[...array]
是一样的。 - Frank Modica