JavaScript 捕获一对值作为键及其值的数据结构
JavaScript data structure to capture a pair of values as key and its value
我有级联过滤器下拉菜单、国家下拉菜单和州下拉菜单。
做出选择后,我需要将用户重定向到相应的页面。
例如。
{
USA + Texas : Texas URL,
Germany + Berlin: Berlin URL
}
我可以做到,但这没有任何意义。我需要选择的值对作为键。
{
Texas URL: ["USA", "Texas"],
Berlin URL: ["German", "Berlin"]
}
我需要创建一种类似于对象映射或哈希的数据结构 table 来捕获此数据。
有人可以就如何最好地创建此数据结构给我建议吗?
到目前为止,这是我的代码:
如果你想让它在代码中变得用户友好和清晰,我认为最好的方法是有 2 个字典。每个国家的城市之一,每个城市的URL:
countries = {
"USA": ["California", "Texas"],
"Germany": ["Berlin", "Leipzig"]
};
urls = {
"Texas": "Texas URL",
"California": "California URL",
"Berlin": "Berlin URL",
"Leipzig": "Leipzig URL"
};
然后,对于用户友好的部分,您可以执行以下操作:当一个国家被 select 编辑时,下一个 select 将只有这个国家的城市的选项。
因此,如果美国 selected,他们在下一个 select 中只会看到德克萨斯州和加利福尼亚州。
希望对你有所帮助:-)
您可以使用嵌套对象并将州和城市作为访问器
target = {
USA: {
California: 'http://example.com/usa/california',
Texas: 'http://example.com/germany/texas'
},
Germany: {
Frankfurt: 'http://example.com/germany/frankfurt',
Berlin: 'http://example.com/germany/berlin'
}
}
用数组访问,如
href = [country, state].reduce((r, k) => (r || {})[k], target)
我有级联过滤器下拉菜单、国家下拉菜单和州下拉菜单。 做出选择后,我需要将用户重定向到相应的页面。 例如。
{
USA + Texas : Texas URL,
Germany + Berlin: Berlin URL
}
我可以做到,但这没有任何意义。我需要选择的值对作为键。
{
Texas URL: ["USA", "Texas"],
Berlin URL: ["German", "Berlin"]
}
我需要创建一种类似于对象映射或哈希的数据结构 table 来捕获此数据。
有人可以就如何最好地创建此数据结构给我建议吗? 到目前为止,这是我的代码:
如果你想让它在代码中变得用户友好和清晰,我认为最好的方法是有 2 个字典。每个国家的城市之一,每个城市的URL:
countries = {
"USA": ["California", "Texas"],
"Germany": ["Berlin", "Leipzig"]
};
urls = {
"Texas": "Texas URL",
"California": "California URL",
"Berlin": "Berlin URL",
"Leipzig": "Leipzig URL"
};
然后,对于用户友好的部分,您可以执行以下操作:当一个国家被 select 编辑时,下一个 select 将只有这个国家的城市的选项。
因此,如果美国 selected,他们在下一个 select 中只会看到德克萨斯州和加利福尼亚州。
希望对你有所帮助:-)
您可以使用嵌套对象并将州和城市作为访问器
target = {
USA: {
California: 'http://example.com/usa/california',
Texas: 'http://example.com/germany/texas'
},
Germany: {
Frankfurt: 'http://example.com/germany/frankfurt',
Berlin: 'http://example.com/germany/berlin'
}
}
用数组访问,如
href = [country, state].reduce((r, k) => (r || {})[k], target)