UNPKG

mixone

Version:

MixOne is a Node scaffolding tool implemented based on Vite, used for compiling HTML5, JavasCript, Vue, React and other codes. It supports packaging Web applications with multiple HTML entry points (BS architecture) and desktop installation packages (CS a

94 lines (81 loc) 2.66 kB
/** * 从完整地址中解析省市县ID * @param {string} fullAddress - 完整地址字符串 * @param {Array} regionData - 地区数据,包含省市县三级结构 * @returns {Object} 包含省、市、县ID的对象,如果未找到则返回null */ function parseRegionIdsFromAddress(fullAddress, regionData) { if (!fullAddress || !regionData || !Array.isArray(regionData)) { return null; } let provinceId = null; let cityId = null; let countyId = null; // 第一级:匹配省份 const provinceMatch = regionData.find(province => { return fullAddress.includes(province.name); }); if (!provinceMatch) { return null; // 未找到匹配的省份 } provinceId = provinceMatch.id; // 第二级:匹配城市 if (provinceMatch.children && Array.isArray(provinceMatch.children)) { const cityMatch = provinceMatch.children.find(city => { return fullAddress.includes(city.name); }); if (cityMatch) { cityId = cityMatch.id; // 第三级:匹配县区 if (cityMatch.children && Array.isArray(cityMatch.children)) { const countyMatch = cityMatch.children.find(county => { return fullAddress.includes(county.name); }); if (countyMatch) { countyId = countyMatch.id; } } } } return { provinceId, cityId, countyId }; } // 示例使用 const regionData = [ { name: "贵州省", id: "eb3845589b6240a982c60000d83a7617", children: [ { name: "贵阳市", id: "43254657687687", children: [ { name: "观山湖区", id: "1234567890abcdef" } ] }, { name: "毕节市", id: "43254657687688", children: [] } ] }, { name: "云南省", id: "eb3845589b6240a982c60000d852617" } ]; const fullAddress = "贵州省贵阳市观山湖区金阳街道金阳大道与梨园路交界处麒龙贵州塔(原西能浙商大厦)(1)北单元18层6号"; // 测试函数 const result = parseRegionIdsFromAddress(fullAddress, regionData); console.log('解析结果:', result); // 导出函数供其他模块使用 module.exports = { parseRegionIdsFromAddress };