我有两个对象的数组:
genericItems: Item[] = [];
backupData: Item[] = [];
我正在用 genericItems
数据填充我的 HTML 表格。该表是可修改的。有一个重置按钮可以撤消使用 backUpData
所做的所有更改。该数组由服务填充:
getGenericItems(selected: Item) {
this.itemService.getGenericItems(selected).subscribe(
result => {
this.genericItems = result;
});
this.backupData = this.genericItems.slice();
}
我的想法是,用户更改将反射(reflect)在第一个数组中,第二个数组可用作重置操作的备份。我在这里面临的问题是,当用户修改表 (genericItems[])
时,第二个数组 backupData
也会被修改。
这是怎么发生的以及如何防止这种情况发生?
最佳答案
克隆对象:
const myClonedObject = Object.assign({}, myObject);
克隆数组:
- 选项 1 如果您有原始类型数组:
const myClonedArray = Object.assign([], myArray);
- 选项 2 - 如果您有一个对象数组:
const myArray= [{ a: 'a', b: 'b' }, { a: 'c', b: 'd' }];
const myClonedArray = [];
myArray.forEach(val => myClonedArray.push(Object.assign({}, val)));
关于arrays - 在 Javascript/Typescript 中克隆一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44808882/