访问json对象中的数组而不使用键

时间:2015-01-05 12:36:04

标签: javascript arrays

我有一个JSON数组对象

data = {
   China: ["Guangzhou","Fax"],
   Majorette: ["Fungous","Godzilla"],
   Bhutan: ["Thimphu","Parr","Photofinishing"]
}

我想访问数组中城市的名称而没有明确提及国家名称,因为列表很长。

var cities = [];
for(var i in data.China) {
   cities[i] = data.China[i];
}

我该如何为所有国家做?

4 个答案:

答案 0 :(得分:2)

有效地遍历城市对象:

Object.keys(data).forEach(function(key) {
    // In here, data[key] is each array of cities.
});

现在,从我对你的问题的理解,你想要将多维对象/数组减少到一个平坦的城市阵列:

var cities = Object.keys(data).reduce(function(arr, key) {
    return arr.concat(data[key]);
}, []);

请注意,Object.keys以及Array.prototype.forEachArray.prototype.reduce是IE9及以上的功能。

答案 1 :(得分:2)

这应该填充cities数组:

var data = {
China: ["Guangzhou","Fax"],
Majorette: ["Fungous","Godzilla"],
Bhutan: ["Thimphu","Parr","Photofinishing"]
}

var cities = [];
for(var i in data){
    if(data.hasOwnProperty(i)){
        for(var j in data[i] ){
             if(data[i].hasOwnProperty(j)){
                cities.push(data[i][j]);
             }
        }
    }

}

console.log(cities);

JSFIDDLE Demo

答案 2 :(得分:-1)

for (var key in data) {
    var citiesArray = data[key]; // cities for the current country
    // your code

}

答案 3 :(得分:-1)

 for (var country in data){
    for(var i=0;i<data[country].length;i++){
        console.log (data[country][i]);   
    } 
}