【发布时间】:2021-01-04 11:04:48
【问题描述】:
我使用以下方法检索数据:
this.employeeService
.getList()
.subscribe((list: any) => {
this.list = list;
});
但是list中有2个属性,其中一个是data,另一个是count。所以,我需要根据list.data.isManager 属性应用过滤器而不破坏列表(我需要保留data 和count 属性)。所以,我需要这样的东西:
this.employeeService
.getList()
.subscribe((list: any) => {
this.list = list.filter(x => x.data.isManager === true);
});
但由于列表不是数组,因此会引发错误。我需要根据list.data.isManager 应用过滤器。那么,我该如何解决这个问题呢?我应该使用map 运算符吗?
这是列表变量的示例数据:
列表:
count: 5
data: Array(5)
0: EmployeeListDto {isManager: true, id: 1, name: "John"}
1: EmployeeListDto {isManager: true, id: 2, name: "Mark"}
2: EmployeeListDto {isManager: true, id: 3, name: "Alice"}
3: EmployeeListDto {isManager: true, id: 4, name: "Mary"}
4: EmployeeListDto {isManager: true, id: 5, name: "Federic"}
【问题讨论】:
-
如果它不是一个数组,你也不能在它上面调用
map()。请提供示例数据和预期输出。 -
如果 isManager 为真且 isanager 为假,this.list 的预期值是多少?
-
@pilchard 我为列表添加了示例数据。谢谢。
-
@GérômeGrignon 我只想检索
isManager === true的项目。但是在比较项目时,我想保留列表及其count和data属性和值。 -
可以说,一旦您过滤了
data,count将不再准确。
标签: javascript arrays reactjs angular rxjs