我有以下方法可以过滤输入字段的对象(具有其他对象的数组):
filterArray(): void {
this.json.items.filter((e) => e.assignedPool != null || e.assignedPool !== undefined);
this.json.items = this.json.items.filter((e) => e.name.includes(this.filter));
}
现在我要过滤另一个变量。这是objecs层次结构:
过滤后的json变量:
export class VirtualServerResponse {
private _kind: String;
private _items: VirtualServer[];
虚拟服务器:
//...properties
private _assignedPool: PoolDTO;
泳池:
//properties
private _membersReference: MembersReferenceDTO;
成员参考:
export class MembersReferenceDTO {
constructor() {}
private _link: String;
private _isSubcollection: String;
private _items: PoolMemberDTO[];
和一个PoolMember:
export class PoolMemberDTO {
constructor() {}
private _address: String;
现在,我希望也可以过滤PoolMember的地址,因此当filter
与任何PoolMember的地址匹配时,类似
this.json.items.foreach((item) =>
item.assignedPool.membersReference.items.foreach(member) =>
member.address == this.filter)
我要过滤json.items
数组,因此该数组包含:
有人可以在这里帮助我吗?
更新:
Server name: test server
Assigned pool -> membersReference ->items[]
items[0]: 10.10.10.2
items[1]: 10.10.10.3
...
因此,如果过滤器为10.10.10.3,则服务器“测试服务器”应位于json.items
答案 0 :(得分:1)
我们可以检查memberReference项目以查看是否存在与过滤器匹配的地址。
filterArray(): void {
this.json.items = this.json.items.filter((e) =>
(e.assignedPool !== null && e.assignedPool !== undefined)
&& (e.name.includes(this.filter) || e.assignedPool.membersReference.items.find((m) => m.address === this.filter));
}