javascript - 多个值的角度过滤器对象数组
问题描述
我有以下方法可以为输入字段过滤一个对象(具有其他对象的数组):
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[];
和一个 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
解决方案
我们可以检查 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));
}
推荐阅读
- laravel - Laravel - 如何将渲染组件传递给变量?
- java - javax.xml.ws.soap.SOAPFaultException:访问被拒绝
- javascript - CSS光标没有改变外观
- python - 我是否正确使用了python池?
- nsis - 如何在安装程序中存储额外的文本文件
- excel - 遍历表的列并删除行
- reactjs - 在 Enzyme.js 的 `wrapper.find(selector)` 中不能使用变量作为选择器吗?
- node.js - 错误:找不到模块“请求承诺”
- django - 为什么它返回 204 而不是 403?自定义权限不起作用
- javascript - 在页面上将 var 显示为 json