如何检查对象报告控件数组上的列类型上是否存在值?

How to check value exist on column Type on array of object report Control?

我需要检查列类型值,但它没有捕获或给我消息列类型存在于控制台日志中

ReportControl: any[] = []
this.ReportControl

value of ReportControl is
[
    {
        "reportId": 2028,
        "fieldName": "offilneURL",
        "reportStatus": "HiddenColumn",
        "columnType": 1
    },
    {
        "reportId": 2028,
        "fieldName": "onlineUrl",
        "reportStatus": null,
        "columnType": 2
    }]

我需要检查 columnType=2 所以我写

if (this.ReportControl["columnType"] == 2) {
    console.log("column type exist");
}

它没有捕获消息控制台日志列类型存在

为什么出了什么问题,如何解决?

由于您有一个对象数组,因此您需要检查每个对象的值,如下所示。

var rc = [
        {
            "reportId": 2028,
            "fieldName": "offilneURL",
            "reportStatus": "HiddenColumn",
            "columnType": 1
        },
        {
            "reportId": 2028,
            "fieldName": "onlineUrl",
            "reportStatus": null,
            "columnType": 2
        }
    ];

    var isValueexistt = false;
    for (let i = 0; i < rc.length; i++) {
        var obj = rc[i];
        isValueexistt = obj["columnType"] == 2 && obj["fieldName"] == 'onlineUrl';
        if (isValueexistt) {
            break;
        }
    }

    console.log(isValueexistt);

因为它是一个数组,所以你必须遍历你的元素

var reportControl = [{
    "reportId": 2028,
    "fieldName": "offilneURL",
    "reportStatus": "HiddenColumn",
    "columnType": 1
  },
  {
    "reportId": 2028,
    "fieldName": "onlineUrl",
    "reportStatus": null,
    "columnType": 2
  }
]

let found = false;
for (let i = 0; i < reportControl.length; i++) {
   if (reportControl[i]['columnType'] === 2 && reportControl[i].fieldName === 'onlineUrl') {
       found = true;
       break;
   }
}

if (found) {
   console.log("column type exist");
}

请注意,这是普通的 javascript。由于您使用的是 angular,因此您必须将 reportControl 替换为 this.ReportControl

正如我从提供的代码中看到的那样,ReportControl 是一个对象数组,不是简单数组,也不是简单对象。因此,您需要遍历该数组,然后检查 columnType 是否存在并检查其值。

例如,您可以执行以下操作:

1/ 从迭代 ReportControl 数组开始:

this.ReportControl.map((reportElement) => {

});

2/ 看看map方法里面有没有:

if("columnType" in reportElement && reportElement["columnType"] == 2) {
    console.log("column type exist in report " + reportElement["reportId"]);
}

所以完整的代码将是:

this.ReportControl.map((reportElement) => {
    if("columnType" in reportElement && reportElement["columnType"] == 2) {
        console.log("column type exist in report " + reportElement["reportId"])
    }
});

您可以使用多种方法来实现此行为,但我认为这是最简单的。