【问题标题】:How can i filter by value Angular Array or Angular model?我如何按值过滤 Angular Array 或 Angular 模型?
【发布时间】:2023-01-11 03:42:49
【问题描述】:

我有从我的服务中提取的此类数据,并将其导入到角度模型中。我在这里要做的是找到模型中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)
      
    })
    
  }

当我尝试这种方式时,只显示 1 个元素,我想用 boolresult true 显示所有值。我如何提供这个?

【问题讨论】:

    标签: angular filter model


    【解决方案1】:

    用户过滤方法而不是查找方法

    寻找()=> 满足提供的测试函数的数组中的第一个元素

    筛选()=> 给定数组的一部分的浅拷贝,过滤到给定数组中通过提供的函数实现的测试的元素

    var serviceResults=[
        {
            "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,
            
        }
    ]
    var approvedResults = serviceResults.filter(item => item.boolresult == true) // I Tried this
    console.log(approvedResults)

    【讨论】:

      【解决方案2】:

      let sampleArray = [
        {
          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
        }
      ];
      
      // Get all the results whose boolresult is 'true'
      // Solution - 1
      sampleArray = sampleArray.filter((element) => element.boolresult);
      console.log("Result ==>>", sampleArray);
      
      // Solution - 2
      
      let result = [];
          sampleArray.forEach(element => {
            if (element.boolresult) {
              result.push(element)
            }
          })

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-12
        • 1970-01-01
        相关资源
        最近更新 更多