Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多值的角度过滤器对象数组_Javascript_Angular_Typescript - Fatal编程技术网

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

Javascript 多值的角度过滤器对象数组,javascript,angular,typescript,Javascript,Angular,Typescript,我使用以下方法过滤输入字段中的对象(具有其他对象数组): 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)); } 现在我想过滤另一个变量。

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

  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[];
和一名单独的池成员:

export class PoolMemberDTO {
  constructor() {}
  private _address: String;
现在,我还希望能够过滤PoolMember的地址,因此当
过滤器
匹配任何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

我们可以检查memberReference items以查看是否有与过滤器匹配的地址

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

试试看。如果地址等于筛选器,则会有另一个筛选器用于返回membersReference项。如果该筛选器返回与原始membersReference长度相同的数组,则所有地址都与该筛选器匹配。地址和名称应该是相同的吗?因此您希望筛选服务器名称以匹配此。筛选器。你们想用什么来匹配地址?你们能给我一个例子吗。过滤器,服务器名称和地址?让我们看看。嘿,非常感谢你们的贡献,现在它可以工作了!我只是用address.includes替换了address===过滤器,但这只是对用户友好行为的一个小改动