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

React中统计多层嵌套对象status值出现次数的实现方法

解决方案

原函数仅遍历传入对象的第一层子属性,没有递归进入嵌套的子对象,因此无法获取深层节点的status值。只需要补充深度递归遍历逻辑,即可覆盖任意嵌套层级的节点统计需求。


完整实现代码
function getTally(obj) {
  const tally = {};

  // 深度递归遍历函数
  function traverse(currentNode) {
    // 跳过非普通对象节点:null、数组、基础类型值不做递归
    if (typeof currentNode !== 'object' || currentNode === null || Array.isArray(currentNode)) {
      return;
    }

    // 当前节点存在status字段时,对应计数+1
    if (currentNode.status) {
      tally[currentNode.status] = (tally[currentNode.status] || 0) + 1;
    }

    // 遍历当前节点所有属性值,递归进入子节点
    Object.values(currentNode).forEach(childValue => traverse(childValue));
  }

  traverse(obj);
  return tally;
}

// 传入示例data测试
console.log(getTally(data));
// 输出结果:{ ERROR: 2, WARNING: 3, OK: 2 },与预期完全一致

逻辑说明
  • 采用深度优先遍历逻辑,会逐层进入所有嵌套的对象节点,不会遗漏任意深层的status字段
  • 增加了类型校验逻辑,会自动跳过结构中的数组(比如attr1)、字符串(比如attr2)这类非普通对象节点,避免运行报错
  • 计数逻辑自动兼容首次出现的状态值,不需要额外写分支判断状态是否已存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:57:13