JavaScript如何实现国家缩写到对应完整国名的转换?
实现方案
你可以先创建国家三位缩写到全称的映射表,再遍历接壤国家的缩写数组匹配全称即可,这种方式查询效率高,即使后续国家数量增多也不会有性能问题。
完整可运行代码:
const countries = [ { name:'Argentina', border:["NGA", "PAK","CHN"], }, { name:'China', border:["ARG", "PAK"], }, { name:'Nigeria', border:['PAK', 'CHN'], }, { name:'Pakistan', border:['NGA', 'ARG'], }, ] // 建立缩写和国家全称的映射关系 const codeToNameMap = new Map([ ['ARG', 'Argentina'], ['CHN', 'China'], ['NGA', 'Nigeria'], ['PAK', 'Pakistan'] ]) // 查找目标国家(注意原代码末尾多了多余的}); 需删除避免语法报错) const targetCountry = countries.find(con => con.name === "Argentina") // 遍历缩写数组转换为全称 const fullBorderNames = targetCountry.border.map(code => codeToNameMap.get(code)) console.log(fullBorderNames)
运行后控制台输出结果为:
["Nigeria", "Pakistan", "China"]
如果使用公共国家数据源,不需要手动写映射关系,直接用接口返回的alpha3Code字段(即国家三位标准缩写)批量生成映射表即可:
// 假设接口返回的全量国家数据存在allCountries变量中 const codeToNameMap = new Map(allCountries.map(item => [item.alpha3Code, item.name])) // 后续转换逻辑和上面完全一致
内容的提问来源于stack exchange,提问作者Temitayo
相关产品推荐
相关产品推荐

