代码之家  ›  专栏  ›  技术社区  ›  ItFreak

多值的角度过滤器对象数组

  •  0
  • ItFreak  · 技术社区  · 7 年前

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

      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));
      }
    

    过滤后的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[];
    

    export class PoolMemberDTO {
      constructor() {}
      private _address: String;
    

    现在,我希望能够同时筛选PoolMember的地址,因此当 filter 匹配任何池成员的地址,如

    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,则服务器“测试服务器”应位于

    1 回复  |  直到 7 年前
        1
  •  1
  •   Eric Svitok    7 年前

    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));
    }
    
    推荐文章