如何使用javascript从对象传递的数组中获取每个字段数据

时间:2015-07-06 11:56:26

标签: javascript json api

{
  "coord": {
    "lon": 73.86,
    "lat": 18.52
  },
  "sys": {
    "message": 0.0083,
    "country": "IN",
    "sunrise": 1436142797,
    "sunset": 1436190324
  },
  "weather": [
    {
      "id": 500,
      "main": "Rain",
      "description": "light rain",
      "icon": "10d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 298.644,
    "temp_min": 298.644,
    "temp_max": 298.644,
    "pressure": 948.79,
    "sea_level": 1018.56,
    "grnd_level": 948.79,
    "humidity": 78
  },
  "wind": {
    "speed": 6.46,
    "deg": 253.501
  },
  "clouds": {
    "all": 68
  },
  "rain": {
    "3h": 0.225
  },
  "dt": 1436180142,
  "id": 1259229,
  "name": "Pune",
  "cod": 200
}

这是我们在请求当前天气api以获取特定城市信息后获得的数据。 我的问题是创建一个循环,通过循环数据获取所有信息并获取所有值

我不想这样写来获取数据 data.coord.lon data.weather.id  等等 希望你能理解 一个循环,它进入object并获取每个数组并从数组中提取每个数据/属性

这是api供参考 http://api.openweathermap.org/data/2.5/weather?q=london 看看

1 个答案:

答案 0 :(得分:2)

如果您指的是收到的对象的所有属性,您可以使用 使用hasOwnProperty循环检查like here

for (var key in data) {
    if (obj.hasOwnProperty(key)) {
        //key
        //obj[key] value
    }
}

您可以递归地使用它以相同的方式获取内部属性。 UPD 这是递归解决方案的小提琴:http://jsfiddle.net/shershen08/xdwqohz1/

function listKeys(data){
    for (var key in data) {
        if (data.hasOwnProperty(key)) {

            if((typeof data[key]).toLowerCase() != 'object'){
            console.log(key, data[key])
            } else {
                console.log(key + ': ');
                listKeys(data[key]);
            }
        } 
    }

}

How to list the properties of a JavaScript object