【发布时间】:2017-07-04 18:25:50
【问题描述】:
我的 Angular 应用中有以下接口:
interface Reservation {
id: string;
from: Date;
to: Date;
}
interface Bedroom {
id: string;
reservations: Array < Reservation > ;
}
interface House {
id: string;
bedrooms: Array < Bedroom >;
}
在某些时候,我必须从 Houses 的 Array 中的某个 Bedroom 中删除 Reservation,并返回整个 House Array 的副本Reservation项目。
我无法改变现有的 Array 或 Houses。我该怎么做?
【问题讨论】:
-
这个问题似乎是不言自明的。制作一个深拷贝,对其进行迭代并删除属性。您对这种方法有疑问吗?你尝试了什么?
-
因此,出于性能原因,我实际上想避免迭代每个项目。我想知道我可以使用
JSON.parse(JSON.stringify(houses))然后真的去“采摘?”从结果对象中取出保留对象,然后将其返回。 -
JSON.parse(JSON.stringify...很难提高性能。你不会在深拷贝实现中看到它。您可以对其进行深度复制并从中删除属性,也可以在手动复制数组时省略属性,并检查是否可以比现有解决方案(如 _、cloneDeep)更好地进行深度复制。你无法避免迭代,因为没有迭代就无法完成数组处理,
标签: javascript typescript immutability deep-copy