测试嵌套对象中的所有叶属性是否为true

时间:2017-07-16 16:33:27

标签: javascript lodash

是否有办法(不手动编写递归函数)来测试对象中的所有叶属性是否为true

obj = { a: true, b: { c: true } }

如果它是一个数组,我可以_.flattenDeep(obj).values().every(_.identity),但它是一个对象。

对象中只有布尔叶属性。

1 个答案:

答案 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));