获取对象的元素

时间:2019-11-08 17:57:15

标签: javascript

在我的JavaScript程序中,我获取JSON文件的值,然后将它们推到数组中。但是,当我尝试获取该数组的元素时,它不会返回任何内容。

以下是推动温度的功能:

temperatures = []
get_info = (data) => {
    var data = JSON.parse(data)
    for(var i = 0; i < data['list'].length; i++){
        temperatures.push(String(data['list'][i]['main']['temp']))
    }
}

我在这里获取数据并调用函数:

weather = (city_name) => {
var key = '.......';
var base_url = 'http://api.openweathermap.org/data/2.5/forecast?';
var url = base_url + 'appid=' + key + '&q=' + city_name + '&units=metric';
fetch(url)
    .then(response => response.text())
    .then(contents => get_info(contents))    
}

当我登录temperatures时,它显示一个空数组[]

如何获取温度数组的元素?

1 个答案:

答案 0 :(得分:0)

您的代码似乎可以正常工作。您已经考虑到 fetch 操作是异步的,因此在解决承诺后,您只能在 temperatures 变量中使用数据。

您可以在调用 get_info 方法后通过控制台日志记录来检查变量温度是否存储了正确的值:

weather = (city_name) => {
    var key = '.......';
    var base_url = 'http://api.openweathermap.org/data/2.5/forecast?';
    var url = base_url + 'appid=' + key + '&q=' + city_name + '&units=metric';
    fetch(url)
        .then(response => response.text())
        .then(contents => {
            get_info(contents);

            console.log(temperatures); // --> Here the data is available!
        });    
};

请注意,如果您知道API正在返回JSON,则可以调用响应的json方法,而不是调用text方法,然后通过{{ 1}}:

JSON.parse