You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何仅订阅接口返回里category值为2的JSON数据

Angular接口返回数据过滤指定分类项实现方案

场景说明

对接接口返回结构为商品对象数组,现有代码直接将全量接口返回值赋值给实例属性,需要仅保留category: 2的数据项。

接口返回示例结构:

[
  {
    "id": 667,
    "image": "https://ae0g",
    "description": "GRE",
    "price": "USD .11",
    "buy": "https://sn",
    "category": 1
  },
  {
    "image": "https://ae04.",
    "description": "10/13 ",
    "price": ".18",
    "buy": "https://",
    "category": 2
  }
]

原有业务代码:

ngOnInit() {
  this.api.getApi()
  .subscribe(    
    data => this.todo=data 
  );
}

实现方式

你可以选择两种常用方式实现过滤,最终效果一致:

方式1:RxJS管道预处理(推荐)

在数据流中提前完成数据过滤,逻辑更聚合,方便后续扩展其他数据处理操作:

  1. 首先导入需要的RxJS操作符
import { map } from 'rxjs/operators';
  1. 修改订阅逻辑,在pipe中加入数组过滤逻辑
ngOnInit() {
  this.api.getApi()
    .pipe(
      map((resList: any[]) => resList.filter(item => item.category === 2))
    )
    .subscribe(filteredList => {
      this.todo = filteredList;
    });
}

方式2:订阅回调内过滤

逻辑更直白,不需要额外导入操作符,适合简单场景:

ngOnInit() {
  this.api.getApi()
    .subscribe(resList => {
      this.todo = resList.filter(item => item.category === 2);
    });
}

注意事项

  • 如果后续为接口返回定义了明确的TypeScript接口,将代码中的any[]替换为对应接口类型即可获得完整类型提示
  • 如果接口返回的category字段是字符串格式的"2",需要将判断条件调整为item.category === '2',避免严格等于模式下类型不匹配导致过滤结果为空

内容的提问来源于stack exchange,提问作者dfs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:03:32