我尝试了这种方法:
this.plans = [];
this.plansCopy = [...this.plans];
似乎不起作用,导致退货重复。
最佳答案
点差运算符返回数组的各个项目。如果这些已经是对象,那么它将返回对这些对象的引用。这是[]
部分,它正在创建一个新数组。因此,您有一个新数组,但它仍将包含相同的对象引用,因此this.plans[0].oper()
也将同时调用this.plansCopy[0].oper()
。
相反,您需要克隆每个单独的对象。有很多不同的方法可以做到这一点(创建数组或单个对象的深拷贝)。如果只需要一级克隆,则可以执行以下操作:
this.plansCopy = this.plans.map(obj => ({...obj}));
这将创建一个新数组,其中每个元素都是每个对象的副本。
关于typescript - 如何克隆TypeScript对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776776/