JavaScript数据结构可捕获一对值作为键及其值

时间:2019-01-23 20:33:05

标签: javascript arrays dictionary object hashtable

我有级联过滤器下拉列表,国家/地区下拉列表和州/地区下拉列表。 做出选择后,我需要将用户重定向到相应的页面。 例如。

    {
      USA + Texas : Texas URL,
      Germany + Berlin: Berlin URL
    } 

我可以这样做,但这没有任何意义。我需要选定的值对作为关键。

{
 Texas URL: ["USA", "Texas"],
 Berlin URL: ["German", "Berlin"]
}

我需要创建一种类似于对象映射或哈希表的数据结构来捕获此数据。

有人可以给我一些有关如何最好地创建此数据结构的建议。 这是到目前为止我的代码:

https://jsbin.com/tarapijumi/3/edit?html,js,output

2 个答案:

答案 0 :(得分:2)

您可以使用嵌套对象,并以州和城市为访问者

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)

答案 1 :(得分:1)

如果要使其在代码中易于使用且清晰易懂,我认为最好的方法是使用2个字典。拥有每个城市的所有国家之一,每个城市的URL都为一个:

countries = {
    "USA": ["California", "Texas"],
    "Germany": ["Berlin", "Leipzig"]
};

urls = {
    "Texas": "Texas URL",
    "California": "California URL",
    "Berlin": "Berlin URL",
    "Leipzig": "Leipzig URL"
};

然后,对于用户友好部分,您可以执行以下操作:选择一个国家/地区后,下一个选择将仅具有该国家/地区的城市的选项。

因此,如果选择“美国”,则在下一个选择中他们只会看到德克萨斯州和加利福尼亚州。

希望我能帮助您:-)