objName是一个包含属性的对象,其中一些属性是数组。我试图检查obj的属性和元素是否未定义、为null或具有空字符串。
function fieldChecker(obj) {
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const value = obj[key];
// Check if the value is an array
if (Array.isArray(value)) {
const hasInvalidElement = value.some(function(element) {
return element === undefined || element === null || element === '';
});
if (hasInvalidElement || key === undefined || key === null || key === '') {
console.log('-', key, ' or its elements are missing or empty. Key Value: ', key, ' Array Value: ', value);
}
} else {
// For non-array values, perform the regular check
if (key === undefined || key === null || key === '' || value === undefined || value === null || value === '') {
console.log('-', key, ' is missing or empty. Key Value: ', key, ' Value: ', value);
}
}
}
}
}
fieldChecker(objName);
我故意修改了一个数组,这样我就可以看到值是一个空的sting,但这段代码没有拾取它。我对JS相当陌生,所以我不确定我是否完全理解如何将元素作为错误处理的目标。
1条答案
按热度按时间fhity93d1#
一个简单的递归就可以做到这一点: