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

在JavaScript中如何反向获取ES6 API Intl.DisplayNames()的地区编码

Intl.DisplayNames 本身没有提供内置的反向查询接口,你可以通过构建本地化地区名到编码的映射表来实现需求,方案如下:

实现思路

遍历所有符合ISO 3166-1标准的两位地区编码,通过Intl.DisplayNames正向生成本地化地区名称,将名称和编码的对应关系存入映射表,后续就可以直接通过地区名称查询对应编码。

代码示例

// 生成指定语言下地区名到编码的反向映射表
const createRegionReverseMap = (locale = 'en') => {
  const regionNames = new Intl.DisplayNames([locale], { type: 'region' });
  const reverseMap = new Map();
  // 遍历所有环境支持的地区编码
  for (const regionCode of Intl.supportedValuesOf('region')) {
    const regionName = regionNames.of(regionCode);
    if (regionName) {
      // 统一转小写避免大小写匹配问题
      reverseMap.set(regionName.toLowerCase(), regionCode);
    }
  }
  return reverseMap;
}

// 用法示例
const enRegionMap = createRegionReverseMap('en');
console.log(enRegionMap.get('united states'.toLowerCase())); // 输出 US
console.log(enRegionMap.get('japan'.toLowerCase())); // 输出 JP

注意事项

  • 映射表和指定语言强绑定,不同语言的地区名称需要单独构建对应映射表
  • 该方案默认仅匹配Intl.DisplayNames返回的官方标准名称,如需支持别名可以自行在映射表中补充规则
  • 若运行环境不支持Intl.supportedValuesOf,可以自行引入ISO 3166-1 alpha-2的两位编码全量列表替换遍历逻辑
  • 极少场景下可能存在不同地区对应同一个本地化名称的情况,可以根据业务需要调整冲突处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:09