【发布时间】:2020-05-26 20:39:50
【问题描述】:
我需要一个函数,它可以接受任何对象并在每个孩子都满足条件时返回真/假。目前,该条件是该属性是真实的。所以 null 和 undefined 应该返回 false,但是 false 的值是通过。
我正在从事的项目是 Typescript,但这也适用于 vanilla JS,我也可以使用 lodash。
到目前为止,我已经开始使用此功能:
function CheckAllPropertiesDefined(obj){
if (!obj) {
return false;
}
for (const key in obj) {
if (o[key] === null || o[key] === undefined) {
return false;
}
}
return true;
}
但是我所做的事情的要求发生了变化(不再是平面对象),我意识到它不适用于嵌套属性。
对这个对象运行它的结果是真的,而它不应该是:
const obj = {
prop1: true,
prop2: true,
prop3: {
prop3a: false,
},
prop4: {
test: null,
foo: false,
child: {
child2: null,
},
},
};
它应该返回 false,因为 prop4.test 和 prop4.child.child2 为空。我认为一些递归是必要的。
【问题讨论】:
标签: javascript typescript recursion pojo