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===过滤器,但这只是对用户友好行为的一个小改动