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

如何在React.JS中使用多值条件过滤嵌套JSON数据

嵌套JSON多条件过滤解决方案

问题背景

需要根据District、Ward No、Categories三个下拉框的选中值,过滤嵌套JSON数据,将选中分类对应的数组条目展示到表格中。预期界面效果如下:
界面效果示意图

原有代码核心错误

  • 定义的wardNo是嵌套数组结构,直接和字符串类型的查询值做全等判断,永远返回false
  • JSON结构中不存在types字段,categorySelected取值逻辑本身会抛出undefined错误
  • 分类字段名是全小写的grievance/general/urgent/services,查询时用的首字母大写Grievances和实际字段名不匹配
  • 过滤逻辑没有对嵌套的ward_no数组做遍历匹配,无法命中目标数据

正确实现代码

const Screen = () => {
  // 下拉查询条件,实际开发中替换为下拉组件的动态取值
  const query = {                            
    district : "Kolkata",
    ward : "6",
    category : "Grievances"
  };

  // 下拉显示值到JSON实际字段的映射,解决大小写、命名不一致问题
  const categoryMap = {
    "Grievances": "grievance",
    "General": "general",
    "Urgent": "urgent",
    "Services": "services"
  }
  const realCategory = categoryMap[query.category];
  let tableData = [];

  // 第一层:匹配选中的行政区
  const targetDistrict = dummyData.find(item => item.district === query.district);
  if (targetDistrict) {
    // 第二层:匹配选中的 Ward
    const targetWard = targetDistrict.ward_no.find(wardItem => wardItem.ward === query.ward);
    if (targetWard) {
      // 第三层:取出对应分类的数组作为表格渲染数据
      tableData = targetWard[realCategory] || [];
    }
  }

  // 输出验证,tableData可直接传入表格组件渲染
  console.log('过滤后表格数据:', tableData);
  console.log('数据条目数:', tableData.length);
       
  return(
    <div>
      {/* 表格组件直接绑定tableData即可完成渲染 */}
    </div>
  );
}

附JSON结构参考

[
    {
        "district": "Kolkata",
        "ward_no": [
            {
                "ward": "6",     
                "grievance": [
                    {
                        "serial_number": "0001",
                        "name": "Siddhartha Chatterjee"
                    },
                    {
                        "serial_number": "0002",
                        "name": "Sajujjo Ghosh"
                    }
                ],
                "general": [
                    {
                        "serial_number": "0003",
                        "name": "Dr. Partha Pratim Paul"
                    },
                    {
                        "serial_number": "0004",
                        "name": "Dr. Partha Pratim Paul"
                    }
                ],
                "urgent": [
                    {
                        "serial_number": "0005",
                        "name": "Ritwick Banerjee"
                    },
                    {
                        "serial_number": "0006",
                        "name": "Soumadip Banerjee"
                    }
                ],
                "services": [
                    {
                        "serial_number": "0007",
                        "name": "Tanajeet Biswas"
                    },
                    {
                        "serial_number": "0008",
                        "name": "Durba Chatterjee"
                    }
                ]
            }
        ]
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:04