arrays - 在 Javascript/Typescript 中克隆一个数组

标签 arrays angular typescript

我有两个对象的数组:

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/

相关文章:

css - 未满足的同伴依赖

组件级别的 Angular 模拟服务

javascript - 发送 Http 请求后更改 @Component 的 @Input 字段(Angular2)

Typescript 接口(interface)一个字段类型依赖于另一个使用接口(interface)交集的字段值 '&'

c - 函数中的 Malloc 结构数组

java - 查找二维阵列中的连接单元

c# - 获取控制数组中的控制索引

ios - 如何使数组包含一个PDF文件

css - angular2中的造型聚合物元素

typescript - 有什么方法可以在 tsconfig 中设置严格模式下使用 Loopback 4?