【发布时间】:2021-03-21 08:23:24
【问题描述】:
我有类似的输入
{'OR': [false, true, {'AND': [true, true]}]}
等等。 它评估为
(false || true || (true && true)) 这是真的
我需要检查输入是否有任何键/值是空/未定义/数字键/不是上述格式
键可以是'OR' 'AND', 数组值只需为布尔值
var isValid = true;
var checkArr = function(obj){
if(obj === null){
isValid = false;
return;
}
if(Array.isArray(obj)){
obj.forEach(function(k){
if(!(typeof(k) === 'boolean' || typeof(k) === 'object' && (k !== null && k !== undefined))){
isValid = false;
return;
}
});
}
else if(typeof(obj) === 'object'){
var key = Object.keys(obj)[0];
if(['OR', 'AND'].indexOf(key) === -1){
isValid = false;
return;
}
}
Object.keys(obj).forEach(function(key){
if(typeof(obj[key]) === 'object'){
checkArr(obj[key]);
}
});
};
有没有更优雅的方法来做到这一点?
【问题讨论】:
-
你没有接受同样问题的答案stackoverflow.com/questions/65211902/…
-
@Bravo 是的,但没有检查输入对象中的空值/未定义值
标签: javascript null-check