如何在JavaScript数组中映射和存储国家和货币

如何在JavaScript数组中映射和存储国家和货币,javascript,jquery,arrays,underscore.js,Javascript,Jquery,Arrays,Underscore.js,我有三种不同的货币,每种货币对应多个国家。第三种货币(欧元)映射到几个国家。如何在javascript数组中构造数据,以便轻松地按国家获取相应的货币代码。我有以下数据,最好的结构方式是什么,以便使用国家代码轻松访问它 USD - en-US,es-MX GBP - en-GB EUR - de-AT,nl-BE,el-CY,et-EE,fi-FI,fr-FR,de-DE,el-GR,en-IE 您可以使用对象,即其恒定时间查找,而不是必须循环的数组: var currencies = {

我有三种不同的货币,每种货币对应多个国家。第三种货币(欧元)映射到几个国家。如何在javascript数组中构造数据,以便轻松地按国家获取相应的货币代码。我有以下数据,最好的结构方式是什么,以便使用国家代码轻松访问它

USD - en-US,es-MX
GBP - en-GB
EUR - de-AT,nl-BE,el-CY,et-EE,fi-FI,fr-FR,de-DE,el-GR,en-IE

您可以使用对象,即其恒定时间查找,而不是必须循环的数组:

var currencies = {
  'de-AT': 'EUR',
  'nl-BE': 'EUR'
  ...
}
如果使用阵列:

var currencies = {
 'USD': ['en-US', 'es-MX']
 ...
}

虽然它看起来更干净、更容易制作,但速度会更慢,因为您必须在每个数组中循环以检查项目是否存在

您可以使用对象,它的固定时间查找,而不是必须循环的数组:

var currencies = {
  'de-AT': 'EUR',
  'nl-BE': 'EUR'
  ...
}
如果使用阵列:

var currencies = {
 'USD': ['en-US', 'es-MX']
 ...
}

虽然它看起来更干净、更容易制作,但速度会更慢,因为您必须在每个数组中循环检查项目是否存在

实际上,您可以像这样进行重新映射操作

var数据={
美元:[“en US”,“es MX”],
英镑:[“欧洲国家标准”],
欧元:[“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”]
},
curMap={};
Object.keys(data).forEach(k=>data[k].forEach(c=>curMap[c]=k));

console.log(curMap)实际上,您可以像这样执行重新映射操作

var数据={
美元:[“en US”,“es MX”],
英镑:[“欧洲国家标准”],
欧元:[“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”、“在”]
},
curMap={};
Object.keys(data).forEach(k=>data[k].forEach(c=>curMap[c]=k));

console.log(curMap)我不想做foreach循环。如果我通过任何国家代码,我只需要得到它的货币代码。时间可能不是问题。对于EUR,我几乎没有50个国家,代码在客户端机器上运行。我不想做foreach循环。如果我通过任何国家代码,我只需要得到它的货币代码。时间可能不是问题。对于EUR,我几乎没有50个国家/地区,代码在客户机上运行。在第一种方法中,我需要为EUR代码添加50个条目。在第二种方法中,如何简单地获得基于国家的货币代码?使用JQuery、下划线、backboneJS等还有更好的选择吗?在第一种方法中,我需要为EUR代码添加50个条目。在第二种方法中,如何简单地获得基于国家的货币代码?使用JQuery、下划线、backboneJS等还有更好的选择吗?