繁体   English   中英

角度过滤器对象数组用于多个值

[英]Angular filter objects array for multiple values

我有以下方法可以过滤输入字段的对象(具有其他对象的数组):

  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数组,所以该数组包含:

  • 名称与过滤器匹配的所有服务器
  • 所有分配了Pool成员地址的服务器都与过滤器匹配

有人可以帮我吗?

更新:

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

我们可以检查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));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM