如何检查对象报告控件数组上的列类型上是否存在值?
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"])
}
});
您可以使用多种方法来实现此行为,但我认为这是最简单的。
我需要检查列类型值,但它没有捕获或给我消息列类型存在于控制台日志中
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"])
}
});
您可以使用多种方法来实现此行为,但我认为这是最简单的。