You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对嵌套JavaScript对象执行布尔校验:判断所有值是否全为true

检查嵌套JavaScript对象所有值是否全为true的解决方案

要处理嵌套对象的遍历,核心思路是递归检查每个值:如果当前值是对象(且不是null),就递归遍历它的所有属性值;如果是原始值,就判断是否为true。结合every()方法可以实现这个逻辑,因为every()会在遇到第一个不符合条件的元素时立即停止遍历,效率更高。

实现代码

function allValuesTrue(obj) {
  // 获取对象所有属性值并遍历检查
  return Object.values(obj).every(value => {
    // 排除null(typeof null会返回object),仅处理真正的对象结构
    if (typeof value === 'object' && value !== null) {
      // 递归检查嵌套对象
      return allValuesTrue(value);
    }
    // 非对象值直接判断是否为true
    return value === true;
  });
}

代码解释

  • Object.values(obj):提取对象的所有属性值,转为数组后用every()遍历。
  • every()特性:只要有一个元素不满足条件就立即终止遍历,避免不必要的计算。
  • 递归逻辑:遇到嵌套对象时,调用自身继续检查该对象的所有值,确保深层嵌套的属性被覆盖。
  • 边界处理:判断value !== null是因为typeof null会误判为object,但null不属于需要遍历的对象结构。

测试示例对象

用你提供的示例对象测试:

const testObj = {
    "2211284396232-5": {
        "2211284396232-5": true, 
        "644889430161": {
            "4812219518053": false, 
            "4812219518055": false,
            "4812219518063": false,
            "4812219518064": true,
            "4812219518069": false, 
            "644889430161": false
        }, 
    },
    "2211628865398-6": {
        "2211628865398-6": false, 
            "729563966440": {
                "5229922707373": false, 
                "729563966440": false
            }, 
    },
     "2212485574058-4": {
        "2212485574058-4": false, 
            "689399023594": {
                "5077186698704": true, 
                "5077186698712": false, 
                "689399023594": false
            }, 
    },
};

console.log(allValuesTrue(testObj)); // 输出: false

因为示例对象中存在多个false值,所以最终返回false。如果把所有值改为true,函数会返回true。

扩展:处理数组嵌套

如果对象中可能包含数组,只需在逻辑中加入数组判断:

function allValuesTrue(obj) {
  return Object.values(obj).every(value => {
    if (typeof value === 'object' && value !== null) {
      // 处理数组情况:遍历数组每个元素递归检查
      if (Array.isArray(value)) {
        return value.every(allValuesTrue);
      }
      return allValuesTrue(value);
    }
    return value === true;
  });
}

内容的提问来源于stack exchange,提问作者sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:33:12