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

能否用Intl.DisplayNames()实现ISO-3到ISO-2国家代码转换?

可以用Intl.DisplayNames()实现ISO-3到ISO-2国家代码的规范转换

答案是肯定的,借助Intl.DisplayNames()结合ECMAScript的国际化标准API,完全可以实现ISO 3166-1 alpha-3到alpha-2的转换,这是符合官方规范的方案,能有效避免自定义映射表的错误或第三方工具弃用带来的问题。

实现方法

Intl.DisplayNames支持将合法的ISO-3国家代码作为输入,我们可以先通过它验证代码的有效性,再结合Intl.Locale提取对应的ISO-2代码:

function iso3ToIso2(iso3Code) {
  const regionNames = new Intl.DisplayNames('en', { type: 'region' });
  
  try {
    // 验证ISO3代码合法性,无效代码会抛出RangeError
    regionNames.of(iso3Code);
    
    // 通过Locale对象获取ISO2代码
    return new Intl.Locale(`en-${iso3Code}`).region;
  } catch (err) {
    // 返回null或自定义错误提示处理无效输入
    return null;
  }
}

// 测试示例
console.log(iso3ToIso2('FRA')); // 输出 'FR'
console.log(iso3ToIso2('GBR')); // 输出 'GB'
console.log(iso3ToIso2('INVALID')); // 输出 null

关键说明

  • 合法性验证:regionNames.of(iso3Code)会对输入的ISO-3代码进行校验,若代码不合法(如不存在的代码)会抛出RangeError,这一步能过滤无效输入,避免转换错误。
  • 兼容性:该方案基于ECMAScript国际化标准,所有现代浏览器(Chrome 81+、Firefox 75+、Safari 14+)和Node.js 14及以上版本都支持,不存在方法弃用风险。
  • 无需自定义映射:完全依赖官方维护的区域代码数据,避免了手动维护映射表可能出现的遗漏或错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:25:26