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

Angular数组/模型按值过滤:如何获取所有boolresult为true的元素?

问题:筛选数组中所有boolresult为true的元素

我从服务中获取了如下格式的数据并导入Angular模型,想要筛选出所有boolresult值为true的元素。尝试使用find方法,但仅能得到1个元素,希望获取全部符合条件的元素,该如何实现?

示例数组:

[
    {
        "ownername": "Owner",
        "result": "Result1",
        "clientname": "ClientName1",
        "boolresult": true
    },
    {
        "ownername": "Owner",
        "result": "Result2",
        "clientname": "ClienName2",
        "boolresult": true
    },
    {
        "ownername": "Owner",
        "result": "Result3",
        "clientname": "ClienName3",
        "boolresult": false
    },
    {
        "ownername": "Owner",
        "result": "Result4",
        "clientname": "ClienName4",
        "boolresult": false
    }
]

我尝试的代码:

private getAllResults(){
    let apiEndpoint = "results"
    this.httpRequestService.getApi(apiEndpoint, false).subscribe(resultRequest => {
      
      this.serviceResults = resultRequest; // This is Array to MyModel
      this.serviceResults.sort((a, b) => new Date(b.createddate).getTime() - new Date(a.createddate).getTime());
      console.log(this.serviceResults)
      
      this.approvedResults = this.serviceResults.find(item => item.boolresult == true) // I Tried this
      console.log(this.approvedResults)
      
    })
    
  }

解决方案

find方法的特性就是只返回数组中第一个满足条件的元素,要获取所有符合条件的元素,你需要用filter方法——它会遍历整个数组,把所有匹配条件的元素收集成一个新数组返回。

修改后的代码如下:

private getAllResults(){
    let apiEndpoint = "results"
    this.httpRequestService.getApi(apiEndpoint, false).subscribe(resultRequest => {
      
      this.serviceResults = resultRequest; // This is Array to MyModel
      this.serviceResults.sort((a, b) => new Date(b.createddate).getTime() - new Date(a.createddate).getTime());
      console.log(this.serviceResults)
      
      // 将find替换为filter
      this.approvedResults = this.serviceResults.filter(item => item.boolresult === true)
      console.log(this.approvedResults)
      
    })
    
  }

另外,判断布尔值可以直接简化写法,代码会更简洁:

this.approvedResults = this.serviceResults.filter(item => item.boolresult)

这样approvedResults就会包含所有boolresult为true的元素了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:00:49