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

基于JSON内匹配的serial_number对应district、ward及所属类别查询方法

实现思路

  • 遍历最外层的地区数组,记录当前遍历对象的district字段值
  • 遍历当前地区下的ward_no数组,记录当前遍历对象的ward字段值
  • 分别遍历当前 ward 对象下的grievance和general两个子数组,比对每个元素的serial_number和输入的目标序列号
  • 匹配到目标序列号后,直接返回记录的district、ward以及当前子数组的名称即可

代码示例(JavaScript 版本)

// 给定的业务数据
const areaData = [
    {
        "district": "Kolkata",
        "ward_no": [
            {
                "ward": "6",
                "grievance": [
                    {   
                        "serial_number": "0001",
                        "name" : "Mr.A"
                    },
                    {
                        "serial_number": "0002",
                        "name" : "Mr.B"
                    }
                ],
                "general": [
                    {
                        "serial_number": "0003",
                        "name" : "Mr.C"
                    },
                    {
                        "serial_number": "0004",
                        "name" : "Mr.D"
                    }
                ]
            },
            {
                "ward": "7",
                "grievance": [
                    {
                        "serial_number": "0005",
                        "name" : "Mr.E"
                    },
                    {
                        "serial_number": "0006",
                        "name" : "Mr.F"
                    }
                ],
                "general": [
                    {
                        "serial_number": "0007",
                        "name" : "Mr.G"
                    },
                    {
                        "serial_number": "0008",
                        "name" : "Mr.H"
                    }
                ]
            }
        ]
    },
    {
        "district": "Hooghly",
        "ward_no": [
            {
                "ward": "8",
                "grievance": [
                    {
                        "serial_number": "0009",
                        "name" : "Mr.I"
                    },
                    {
                        "serial_number": "0010",
                        "name" : "Mr.J"
                    }
                ],
                "general": [
                    {
                        "serial_number": "0011",
                        "name" : "Mr.K"
                    },
                    {
                        "serial_number": "0012",
                        "name" : "Mr.L"
                    }
                ]
            },
            {
                "ward": "9",
                "grievance": [
                    {
                        "serial_number": "0013",
                        "name" : "Mr.M"
                    },
                    {
                        "serial_number": "0014",
                        "name" : "Mr.N"
                    }
                ],
                "general": [
                    {
                        "serial_number": "0015",
                        "name" : "Mr.O"
                    },
                    {
                        "serial_number": "0018",
                        "name" : "Bruno Fernandes"
                    }
                ]
            }
        ]
    }
];

// 查询函数,入参为目标序列号
function getSerialInfo(targetSerial) {
    // 遍历所有地区
    for (const area of areaData) {
        const currentDistrict = area.district;
        // 遍历当前地区下的所有 ward
        for (const wardItem of area.ward_no) {
            const currentWard = wardItem.ward;
            // 匹配 grievance 数组
            const grievanceHit = wardItem.grievance.find(item => item.serial_number === targetSerial);
            if (grievanceHit) {
                return {
                    district: currentDistrict,
                    ward: currentWard,
                    arrayKey: 'grievance'
                };
            }
            // 匹配 general 数组
            const generalHit = wardItem.general.find(item => item.serial_number === targetSerial);
            if (generalHit) {
                return {
                    district: currentDistrict,
                    ward: currentWard,
                    arrayKey: 'general'
                };
            }
        }
    }
    // 无匹配返回 null
    return null;
}

// 测试:查询序列号 0018
const queryResult = getSerialInfo('0018');
console.log(queryResult);
// 输出结果:{ district: 'Hooghly', ward: '9', arrayKey: 'general' }

注意:你给出的示例中输入0018对应ward为8和实际JSON数据不符,实际匹配结果ward为9。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:07