我的任务是尝试从这些国家/地区检索城市。但是,我不确定如何获得它们?取得以下城市名称的最简单方法是:
在美国,它将是:纽约市,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']
之外,还有其他访问城市名称的方式吗?
我都需要它们,但都需要一个选择器(如果可以的话)。
如果有帮助,请随时将数据结构更改为更详细的结构。
答案 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'])