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

如何在TypeScript中过滤嵌套数组并保留Summary记录?

解决方案:过滤JournalReport行数据

你遇到的问题主要是原代码没处理两种核心情况:一是部分行没有ColData而是带Summary的Section行,二是你需要精准检查ColData[1]的id而非任意ColData项的id。下面是修正后的代码,完全满足你的需求:

function getResult(filterById, objList) {
  return objList.Rows.Row.filter(function(row) {
    // 保留所有包含Summary的Section行
    if (row.Summary) {
      return true;
    }
    // 检查Data行的ColData[1].id是否匹配目标值
    // 用可选链操作符安全访问,避免结构异常报错
    if (row.ColData?.[1]?.id === filterById) {
      return true;
    }
    // 其他不符合条件的行直接过滤
    return false;
  });
}

代码逻辑说明:

  • 优先保留Summary行:只要当前行存在Summary属性,就直接判定为需要保留的行,完全覆盖你要保留所有Summary记录的需求
  • 精准匹配Data行:通过可选链?.安全访问ColData[1].id,既避免了某些行结构异常导致的报错,又精准匹配了你指定的索引位置的id值
  • 过滤无关行:既不是Summary行、也不匹配目标id的行都会被过滤掉

使用示例:

假设你的原始JSON数据存储在reportData变量中,调用方式如下:

const filteredResult = getResult("567", reportData);
console.log(filteredResult);

运行后会得到你需要的结果:包含那条ColData[1].id为"567"的Data行,以及所有带Summary的Section行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:22:47