【发布时间】:2023-01-07 14:10:13
【问题描述】:
如果对象的任何属性具有值,则以下函数返回 true。该对象可能有嵌套对象
function hasValue(obj) {
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const value = obj[key];
if (typeof value === "object") {
if (hasValue(value)) {
return true;
}
} else if (value) {
return true;
}
}
}
return false;
}
例如对于以下对象返回 true
const model = {
criteria: '',
category: '',
range: {
start: null,
end: null
},
sample: '',
another: {
a: {
b: {
c: {
d: '',
e: {},
f: [1]
}
}
}
}
}
这是因为嵌套在 another 中的属性 f 具有具有值的数组的值
但是这个函数因日期而失败。例如。由于 a 和 end 属性具有值,因此以下对象应返回 true。在这种情况下日期
const model = {
criteria: "",
category: "",
range: {
start: { a: [new Date()] },
end: new Date(),
},
};
这种行为的原因是什么?我该如何解决?也确定日期
【问题讨论】:
标签: javascript recursion