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

如何从嵌套对象中过滤仅保留true值并维持原结构

问题描述

给定如下嵌套结构的errors对象:

const errors = {
    frontdesk: {
      PreAudit: true,
      AuthSent: false,
      Limitation: false,
    },
    clinical: {
      medicaid: true,
      Vitals: true,
      Height: false,
    },
    eligibilityVerification: {
      Mentioned: true,
      EVAttached: false,
    }
};

需要过滤掉所有值为false的属性,仅保留值为true的属性,同时维持原有的对象嵌套结构。

解决方案

可以通过递归遍历对象的方式实现需求,以下是JavaScript的实现代码:

function filterTrueErrors(obj) {
    const filtered = {};
    for (const key in obj) {
        if (obj.hasOwnProperty(key)) {
            const value = obj[key];
            if (typeof value === 'object' && value !== null) {
                const nestedFiltered = filterTrueErrors(value);
                if (Object.keys(nestedFiltered).length > 0) {
                    filtered[key] = nestedFiltered;
                }
            } else {
                if (value === true) {
                    filtered[key] = value;
                }
            }
        }
    }
    return filtered;
}

// 使用示例
const filteredErrors = filterTrueErrors(errors);
处理结果

运行上述代码后,得到的filteredErrors结果如下:

{
  frontdesk: {
    PreAudit: true
  },
  clinical: {
    medicaid: true,
    Vitals: true
  },
  eligibilityVerification: {
    Mentioned: true
  }
}
代码说明
  • 递归函数filterTrueErrors遍历输入对象的每个属性:
    • 若属性值是嵌套对象,递归调用自身处理子对象,仅当子对象处理后存在有效属性时,才将其加入结果;
    • 若属性值为布尔类型,仅保留值为true的属性;
  • 该实现支持任意深度的嵌套对象,同时避免生成空的嵌套对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:35:42