考虑以下对象o,以及一个应该打印到控制台属性的函数findEmpty,该值是一个空数组。
var o={
"StudentInfo": [{
"Name1": [{
"100": {
"a": "12"
}
}, {
"101": {
"a": "50"
}
}]
}, {
"Name2": [{
"102": {}
}, {
"103": {
"b": "50"
}
}]
}]
}
function findEmpty(obj)
{
for (var p in obj)
{
debugger;
var propValue = obj[p];
var condition = propValue && typeof propValue === 'object' && !Array.isArray(propValue);
if (Array.isArray(propValue) && propValue.length == 0) {
console.log('Property ' + p + ' has an empty array.');
}
else if (condition) {
findEmpty(propValue);
}
}
}
在调试中,else if要检查的条件呈现为false,但它会一直输入它。我错过了什么?
更新:在调试期间,在同一个布尔变量的控制台中运行if / else将执行错误评估的代码。
答案 0 :(得分:-5)
propValue如何同时成为一个对象和一个数组?
不应该是:
var condition = propValue && typeof propValue === 'array' && !Array.isArray(propValue);