我正在尝试检查以下嵌套对象中是否存在值:
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");
}