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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:09:03