如何在TypeScript中遍历对象内的数组,实现根据邮编自动填充城市
问题原因
你现有代码的核心问题出在邮编匹配到城市的逻辑层:
- 循环逻辑冗余,同时嵌套了普通for循环、forEach遍历、for-in循环,执行逻辑混乱
- 存在语法错误:
if(score = Object.values(zipCodes))是赋值操作而非判断操作,完全无法实现匹配后取对应城市名的需求 - 匹配到邮编值后没有关联到对应的城市名key,自然无法给city表单控件赋值正确的结果
修正后的代码
test.component.ts 中 onKeyUp 方法替换为以下代码:
onKeyUp(event: any){ const inputZip = event.target.value.trim(); let matchedCity = ''; // 遍历邮编映射表的键值对直接匹配 for (const [city, zipList] of Object.entries(this.zip)) { if (zipList.includes(inputZip)) { matchedCity = city; break; } } // 匹配到城市才赋值,没匹配到可按需选择清空或保留原有值 if (matchedCity) { this.profileForm.patchValue({ organizationAddress: { city: matchedCity } }); } }
优化建议(可选)
- 可以把
keyup事件换成input事件,适配输入法输入、复制粘贴等场景,触发更稳定 - 可以加上输入长度判断,比如用户输入满邮编位数再触发匹配,减少无效执行
内容的提问来源于stack exchange,提问作者pratyaksh sudan
相关产品推荐
相关产品推荐

