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

如何检测嵌套对象中是否存在任意键值为true?

递归检测嵌套对象中是否存在值为true的键

首先,你的现有代码逻辑和需求不符:原函数!Object.keys(o).find(k => !o[k])是判断所有键的值都为true,而你需要的是检测任意层级中是否存在值为true的键。下面是支持嵌套对象的解决方案:

实现思路

  • 遍历对象的每个键值对
  • 如果当前值是true,直接返回true
  • 如果当前值是对象(且不是null),递归调用检测函数
  • 遍历完所有键都没找到true,返回false

代码实现

const odb = {
  "all": true,
  "allA": false,
  "allB": false,
  "allC": {
    "allD": false,
    "allE": false,
  }
}

const isAnyKeyValueTrue = (obj) => {
  // 遍历对象的每个键
  for (const key in obj) {
    const value = obj[key];
    // 找到值为true的直接返回
    if (value === true) {
      return true;
    }
    // 如果是对象且不是null,递归检测
    if (typeof value === 'object' && value !== null) {
      if (isAnyKeyValueTrue(value)) {
        return true;
      }
    }
  }
  // 所有层级都没找到true
  return false;
}

console.log(isAnyKeyValueTrue(odb)); // 输出: true

额外说明

  • 函数会在找到第一个true时立即返回,避免不必要的遍历,性能更优
  • 处理了null的情况(因为typeof null是object,需要排除)
  • 支持任意多层嵌套的对象结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:10:32