如何在此数据结构中选择这些成员变量

时间:2019-02-11 20:31:01

标签: javascript typescript

我的任务是尝试从这些国家/地区检索城市。但是,我不确定如何获得它们?取得以下城市名称的最简单方法是:

在美国,它将是:纽约市,SFO。

我已经尝试过这样的操作:cityData[0].children[0],但这只是给了我Object object

如何定位每个国家/地区的城市?

var cityData = [
    {country: "USA", children:[
        {"NYC": ["60%", "70%", "80%"]}, 
        {"SFO": ["40%", "30%", "20%"]}
    ]},
    {country: "Mexico", children:[
        {"Mexico City": ["80%", "80%", "80%"]}, 
        {"Cancun": ["20%", "20%", "20%"]}
    ]},
    {country: "Canada", children:[
        {"Toronto": ["50%", "60%", "60%"]}, 
        {"Vancouver": ["50%", "40%", "40%"]}
    ]
}];

除了通过cityData[0].children['NYC']cityData[0].children['SFO']之外,还有其他访问城市名称的方式吗?

我都需要它们,但都需要一个选择器(如果可以的话)。

如果有帮助,请随时将数据结构更改为更详细的结构。

3 个答案:

答案 0 :(得分:1)

您可以使用toBase()来访问您正在查看的对象的键,它将返回键的数组。您可以使用地图获取每个对象上的键以返回城市阵列。这将返回一系列城市

Object.keys

cityData[0].children.map(itm => Object.keys(itm)[0])

答案 1 :(得分:0)

尝试

   for(let key in cityData[0].children[0]) {
       console.log(key);
    }

答案 2 :(得分:0)

如果您先对子数组进行预处理,使其成为对象,则可以得到您建议的确切语法。

var cityData = [
    {country: "USA", children:[
        {"NYC": ["60%", "70%", "80%"]}, 
        {"SFO": ["40%", "30%", "20%"]}
    ]},
    {country: "Mexico", children:[
        {"Mexico City": ["80%", "80%", "80%"]}, 
        {"Cancun": ["20%", "20%", "20%"]}
    ]},
    {country: "Canada", children:[
        {"Toronto": ["50%", "60%", "60%"]}, 
        {"Vancouver": ["50%", "40%", "40%"]}
    ]
}];

cityData.forEach(country => {
    let childrenObj = {}
    country.children.forEach(city => {
        let key = Object.keys(city)[0]
        childrenObj[key] = key
    })
    country.children = childrenObj
})

console.log(cityData[0].children['NYC'])