如何获取包含值数组的嵌套对象的值



我正在尝试检查以下嵌套对象中是否存在值:

var Obj = {
"testname":"Validator",
"dataTableName":"y",
"dataColumnName":"y",
"CheckFilter":"CheckBoxFilter",
"CheckFilterSettings":{
"values":[
"70.00"
],
"hierarchyPaths":[

]
}
}

我试过使用

for (var i in Obj) {
if (Obj[i].CheckFilterSettings.values[0] === "70.00"){
console.log("Value Found");
}else{
console.log("Value Not Found");
}
}

有人能告诉我哪里出了问题吗。

如果您想检查values数组是否为空,并且该数组的路径保持不变,您可以使用:

for (var i in Obj) {
if (Obj[i].CheckFilterSettings.values.length) {
console.log("Value Found");
} else {
console.log("Value Not Found");
}
}

请注意,这假设了一个对象数组,而从所提供的数据结构来看,这一点并不明显。如果这是整个对象,那么尝试:

if (Obj.CheckFilterSettings.values.length) {
console.log("Value Found");
} else {
console.log("Value Not Found");
}

您的Obj[i]本身就是关键,因此,不要调用"CheckFilterSettings";再次在Obj[i]上。

检查这个-

var Obj = {
"testname": "Validator",
"dataTableName": "y",
"dataColumnName": "y",
"CheckFilter": "CheckBoxFilter",
"CheckFilterSettings": {
"values": [
"70.00"
],
"hierarchyPaths": [
]
}
}
for (var i in Obj) {
if (Obj.hasOwnProperty(i)) {
if (i === "CheckFilterSettings" && Obj[i].hasOwnProperty("values")) {
if (Obj[i].values[0] === "70.00") {
console.log("Value Found");
} else {
console.log("Value Not Found");
}
}
}
}

您可以这样使用Object.keys()

let Obj = {
"testname": "Validator",
"dataTableName": "y",
"dataColumnName": "y",
"CheckFilter": "CheckBoxFilter",
"CheckFilterSettings": {
"values": [
"70.00"
],
"hierarchyPaths": [
]
}
}
Object.keys(Obj).map((key) => {
if (key == 'CheckFilterSettings') {
Obj[key].values[0] == '70.00' ? console.log('value found') : console.log('value not found');
}
});

无需循环遍历对象。只需简单地使用es20的可选链接:

var Obj = {
"testname":"Validator",
"dataTableName":"y",
"dataColumnName":"y",
"CheckFilter":"CheckBoxFilter",
"CheckFilterSettings":{
"values":[
"70.00"
],
"hierarchyPaths":[

]
}
}
if(Obj?.CheckFilterSettings?.values?.length>0){
console.log(Obj?.CheckFilterSettings?.values)
}else {
//whatever you want
}

它可以简化,试试这个。。。

if (Obj.CheckFilterSettings?.values[0] === "70.00"){
console.log("Value Found");
} else {
console.log("Value Not Found");
}

最新更新