【发布时间】:2021-01-09 23:34:18
【问题描述】:
所以我正在使用 OpenWeatherMap API 构建这个网络预报应用程序,到目前为止,我能够从列表输出的第一次迭代中获取数据,但是我还需要获取其他特定字段的数据。这是我的一些代码:
ajaxGet("https://api.openweathermap.org/data/2.5/onecall?lat=4.6097&lon=-74.0817&exclude=current,minutely,hourly,alerts&appid=APPID&units=metric", function (response) {
var data = JSON.parse(response);
console.log(data);
var temperature = document.createElement("h6");
temperature.textContent = data.daily[0].temp.max + "°" + " / " + data.daily[0].temp.min + "°";
document.getElementById("temperaturaBogVier").appendChild(temperature);
});
下面是 API 输出的示例(我在这里只展示了第一次迭代,但总共至少有 6 个,https://api.openweathermap.org/data/2.5/onecall?lat=4.6097&lon=-74.0817&exclude=current,minutely,hourly,alerts&appid=APPID&units=metric):
{"lat":4.61,"lon":-74.08,"timezone":"America/Bogota","timezone_offset":-18000,"daily":
[
{"dt":1600876800,
"sunrise":1600857917,
"sunset":1600901504,
"temp":{"day":18.14,"min":8.99,"max":18.14,"night":12.08,"eve":15.45,"morn":8.99},
"feels_like":{"day":17,"night":11.02,"eve":14.6,"morn":7.58},
"pressure":1017,"humidity":54,
"dew_point":8.69,
"wind_speed":1.2,
"wind_deg":164,
"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],
"clouds":82,
"pop":0.94,
"rain":5.85,
"uvi":15.14}
]
}
如您所见,我可以将“data.daily[0].temp.”中包含的数据打印到我的 HTML 中,但它仅适用于第一组字段,我不知道如何选择特定的迭代。我确定我在 concat 中遗漏了一些东西,但到目前为止我没有尝试过任何东西。
我们将不胜感激任何帮助,并获得一个虚构的华夫饼作为奖励。谢:D
【问题讨论】:
-
你的意思是像
data.daily[1]、data.daily[2]等吗?或者你对特定的迭代是什么意思? -
@DMalan 好吧,输出在 data.daily[0] 中有一个数组,其中只包含一个列表,所以没有 data.daily[1]、data.daily[2] 等。我正在尝试保留此列表中包含的元素,但由于它本身不是一个数组,因此我不太确定该怎么做...顺便说一句,请您回复
-
您可以考虑删除或替换请求 URL 的
appid=XXXX部分。这是您的 OpenWeather 个人 API 密钥,您不应共享。 -
@DiegoP。
data.daily[0]是一个对象,data.daily是一个数组,您可以使用data.daily[1]、data.daily[2]等进行索引。 -
@DMalan 谢谢,你完全正确。我只调用了一行,这就是为什么我无法获取其余信息的原因。干杯!
标签: javascript concatenation openweathermap