是否有办法(不手动编写递归函数)来测试对象中的所有叶属性是否为true
?
obj = { a: true, b: { c: true } }
如果它是一个数组,我可以_.flattenDeep(obj).values().every(_.identity)
,但它是一个对象。
对象中只有布尔叶属性。
答案 0 :(得分:3)
我不认为这是可能的。如果你展平一个对象,你将覆盖重复的键,这将使整个操作变得毫无意义。一个非常简单的递归函数可以检查它
function allTrue(obj) {
return Object.values(obj)
.every(v => v instanceof Object ? allTrue(v) : v === true)
}
let obj = {
a: true,
b: {
c: true
}
};
console.log(allTrue(obj));