我将如何在 JavaScript 中表示以下菜单结构

How would I represent the following menu structure in JavaScript?

本文关键字:表示 菜单 结构 JavaScript      更新时间:2023-09-26
Soccer
  Australia
    Melbourne
    Sydney
  New Zealand
    Christchurch
Tennis
  United Kingdom
    Kensington
    London
    Manchester

我尝试过多维数组,但由于长度不同,它变得很尴尬。我也尝试过键/值对,但是我再次遇到了困难,因为在某种程度上只有值而没有键。我试图在视觉上表示层次结构。 澄清悉尼是澳大利亚的孩子。澳大利亚是足球之子。足球是网球等的兄弟姐妹。

编辑:我正在寻找一种不需要任何实际数据知识的解决方案。 换句话说,我可以将"足球"换成"棒球",并且只需打印出数据结构的简单算法就不会中断。

在 JSON 中:

{
    "Soccer": {
        "Australia": [
            "Melbourne",
            "Sydney"
        ],
        "NewZealand": [
            "Christchurch"
        ]
    },
    "Tennis": {
        "UnitedKingdom": [
            "Kensington",
            "London",
            "Manchester"
        ]
    }
}

下面是数据的循环:

for ( sport in data ) {
    // print sport here
    countries =  data[sport];    
    for ( country in countries ) {
        // print country here
        cities = countries[country];
        for (var i = 0; i < cities.length; i++) {
            // print city here
        };
    };
};​

可以在jsFiddle上看到这里:http://jsfiddle.net/2p6g3/18/

{
"sport": [
    {
        "name": "Soccer",
        "place": [
            {
                "country": "Australia",
                "city": [
                    {
                        "name": "Melbourne"
                    },
                    {
                        "nam": "Sdney"
                    }
                ]
            },
            {
                "country": "NewZealand",
                "city": [
                    {
                        "name": "Christchurch"
                    }
                ]
            }
        ]
    },
    {
        "name": "Tennis",
        "place": [
            {
                "country": "UnitedKingdom",
                "city": [
                    {
                        "name": "Manchester"
                    }
                ]
            }
        ]
    }
]

}

遍历对象数组以获取必填字段:

sport[].name // name of the sports
sport[].place[].country // country name
sport[].place[].city[].name // city name