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

如何在Angular 5或TypeScript中获取JSON中值为false的键

嘿,我来帮你搞定这个问题!在Angular 5或者TypeScript环境下,要从你给出的这个嵌套对象里揪出所有值为false的键,咱们分两种场景来处理——毕竟你的对象里还有嵌套的子对象呢~

首先先把你给出的对象用TypeScript的格式整理出来:

const xyz = { 
  abc: { 
    'a': true, 
    'b': true, 
    'c': true, 
    'd': false, 
    'e': { 'f': true, 'g': false }, 
    'h': true, 
    'i': true 
  } 
};

1. 浅层查找(只找第一层直接子属性)

如果只需要提取abc对象下直接子属性里值为false的键,用Object.entries配合过滤就能轻松实现:

// 先取出abc对象
const abcObj = xyz.abc;
// 过滤并提取值为false的键
const shallowFalseKeys = Object.entries(abcObj)
  .filter(([key, value]) => value === false)
  .map(([key]) => key);

console.log(shallowFalseKeys); // 输出结果:['d']

简单解释下:Object.entries会把对象转换成[键, 值]格式的数组,我们先过滤出值为false的项,再把对应的键提取出来就行。

2. 深层递归查找(包含所有嵌套子对象)

因为你的对象里有e这个嵌套子对象,里面的g也是false,如果要把所有层级里的false键都找出来,就得写个递归函数来遍历:

function findAllFalseKeys(obj: Record<string, any>): string[] {
  let falseKeys: string[] = [];

  for (const [key, value] of Object.entries(obj)) {
    // 找到值为false的键,直接存入数组
    if (value === false) {
      falseKeys.push(key);
    } 
    // 如果当前值是对象且不是null,就递归查找子对象
    else if (typeof value === 'object' && value !== null) {
      falseKeys = falseKeys.concat(findAllFalseKeys(value));
    }
  }

  return falseKeys;
}

// 调用函数传入abc对象
const allFalseKeys = findAllFalseKeys(xyz.abc);
console.log(allFalseKeys); // 输出结果:['d', 'g']

这里要注意判断value !== null,因为typeof null的结果也是object,得把这种情况排除掉。

额外:TypeScript类型优化

如果想让代码更符合TypeScript的类型安全要求,避免用any,可以自定义嵌套对象的类型:

// 定义嵌套对象的类型:值要么是boolean,要么是嵌套对象
type NestedBooleanObject = { [key: string]: boolean | NestedBooleanObject };

function findAllFalseKeys(obj: NestedBooleanObject): string[] {
  let falseKeys: string[] = [];

  for (const [key, value] of Object.entries(obj)) {
    if (value === false) {
      falseKeys.push(key);
    } else {
      // 因为类型定义,这里value肯定是嵌套对象,不用再判断null
      falseKeys = falseKeys.concat(findAllFalseKeys(value));
    }
  }

  return falseKeys;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:29:12