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

如何在嵌套对象数组中用filter统计外层及subCatg数组符合条件的数量

嵌套对象数组符合条件项统计解决方案

问题分析

你的现有代码存在三个关键问题:

  • 条件判断中isValidated === true未指定所属对象,应该是items.isValidated
  • Mock数据里的inProcessing和isValidated是字符串类型的"true"/"false",直接用!items.inProcessing会判断错误(非空字符串在JS中是真值,!"true"结果为false)
  • 未遍历嵌套的subCatg数组,无法统计子数组中的符合条件项

修正后的代码

getCount = (itemstoBeCreated) => {
  const { typeCreated } = this.props;
  // 定义统一的判断条件函数,复用逻辑
  const meetsCondition = (item) => {
    // 直接针对字符串类型的布尔值做判断
    return item.inProcessing !== "true" && item.isValidated === "true";
  };

  // 统计外层数组符合条件的数量
  const outerCount = itemstoBeCreated.filter(meetsCondition).length;

  // 统计所有嵌套subCatg数组中符合条件的数量
  const subCount = itemstoBeCreated.reduce((total, currentItem) => {
    return total + currentItem.subCatg.filter(meetsCondition).length;
  }, 0);

  // 计算总数量
  return typeCreated + outerCount + subCount;
};

代码说明

  1. 统一条件函数:把判断逻辑抽成meetsCondition函数,避免重复代码,也方便后续修改条件
  2. 字符串布尔值处理:直接用字符串比较替代类型转换,逻辑更直观
  3. 子数组统计:用reduce遍历外层数组,对每个项的subCatg数组过滤后累加长度,得到所有子项的符合条件总数
  4. 总和计算:将外部传入的typeCreated、外层统计数、子数组统计数相加,得到最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:05:18