typescript - 如何克隆TypeScript对象数组?

标签 typescript typescript2.0

我尝试了这种方法:

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/

相关文章:

typescript - 使用构造函数时找不到名称,但在转换时可以找到名称

javascript - 我如何重构我的方法?

typescript - 在自定义定义中引用全局声明的命名空间类型

typescript - 是否可以扩展可能为 Null 的类型?

javascript - 现有 javascript 库的最小 typescript 定义

angular4 路由没有保持刷新

Typescript - 数组的keyof值

angular - 如何在 Angular 4 的 typescript 中打印 div,因为它完全出现在网页中?

reactjs - "Missing return type on function"样式组件插值函数错误

javascript - 将 jQuery .map() 方法调用转换为 TypeScript