当我在数组中有对象并找到最后一个 id 时,我无法使用过滤器,角度



在这种情况下,我需要你的意见:

我从API得到这个函数:

getRS(
idProject: string
): Observable<ResponseModel<RSModel>> {
return this.http.get<ResponseModel<RSModel>>(
ApiUrlsConfig.getRS(
idProject
)
);
}

此响应:

{
"data": [
{
"id": "id1",
"state": 1,
"note": null
},
{
"id": "id1",
"state": 2,
"note": "Reason 1"
},
{
"id": "id2",
"state": 2,
"note": "Reason updated3",
}
],
"result": null
}

我需要在这个响应中使用filter,因为我应该得到每个id的最后一个状态。例如,我想在id为id1的项中显示状态2。为此,我想使用过滤器。问题是因为我不能在上面使用过滤器,我不明白为什么。

我试着写这个代码:

@Input() set jobId(jobId: string) {
this.optionsService
.getRS(
this.idProject
)
.pipe()
.subscribe((res) => {
let resId = res.filter((aaa)=>{
if(aaa.id === jobId){
res.slice(-1)[0].id
}
}
)
});
}

不起作用。

你能和我分享一些想法吗?

谢谢

试试这个逻辑:

  1. 向后循环投掷
  2. 在索引上向后循环到开头
  3. 拼接副本

let response = {
"data": [
{
"id": "id1",
"state": 1,
"note": null
},
{
"id": "id1",
"state": 2,
"note": "Reason 1"
},
{
"id": "id2",
"state": 2,
"note": "Reason updated3"
}
],
"result": null
}
let data = response.data;
for (let i = data.length - 1; i >= 0; i--) {
for (let j = i - 1; j >= 0; j--) {
if (data[i].id === data[j].id) {
data.splice(j, 1);
j++;
}
}
};
console.log(data);

试试这个:

if(aaa.id == jobId){
return res.slice(-1)[0].id
}

最新更新