代码之家  ›  专栏  ›  技术社区  ›  Athapali

捕获一对值作为键及其值的javascript数据结构

  •  1
  • Athapali  · 技术社区  · 7 年前

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

        {
          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 回复  |  直到 7 年前
        1
  •  2
  •   Nina Scholz    7 年前

    您可以使用嵌套对象,并使用state和city作为访问器

    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)
    
        2
  •  1
  •   4br3mm0rd    7 年前

    如果你想让它在代码中更容易使用和清晰,我认为最好的方法是有两个字典。每个城市所在的所有国家中的一个,每个城市的URL对应一个:

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

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

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

    我希望我能帮助你:-)