我有这个代码。我需要为此对象编写一个验证。如果任何属性为空,或者不是字符串控制台,则记录错误或控制台记录消息。
<body>
<div>
<h3>Selected:@Model.SelectedText</h3>
<h3>Path:@Model.Path</h3>
<h3>Find:@Model.Find</h3>
</div>
</body>
如何为ob1和ob2编写代码或功能。
答案 0 :(得分:0)
您可以使用构造函数来检查它是否是对象数组,然后简单地基于该对象进行迭代并检查每个元素。
var obj = { ob1 : {"val1" : "test1", "val2" : "test1"},
ob2 : ["v2", "v3", ""]
};
var result = true;
Object.keys(obj).forEach((key)=>{
if(obj[key].constructor.toString().indexOf('Array') > 0){
obj[key].forEach((element)=>{
if(typeof element !=='string' || element === '')
result = false;
});
}
if(obj[key].constructor.toString().indexOf('Object') > 0){
Object.keys(obj[key]).forEach((element)=>{
if(typeof obj[key][element] !=='string' || element === '')
result = false;
});
}
});
if(!result)
console.error('A property is not a string or empty!');
答案 1 :(得分:0)
也许是这样的:
var obj = {
ob1 : {
"val1" : "test1",
"val2" : "test2"
},
ob2 : [
"v2",
"v3",
"v4"
]
};
for (var property in obj){
if (typeof obj[property] !=='string' || obj[property] !== null){
console.log(property + ' is NOT empty or not a string!');
if(obj[property] instanceof Array){
console.log(property + ' is Array');
for(var ka in obj[property]){
console.log(' array el ->'+obj[property][ka]);
}
}else if(typeof obj[property]==='object'){
console.log(property + ' is object');
for(var ko in obj[property]){
console.log(' obj el ('+ko+') - >'+obj[property][ko]);
}
}
}
};