Вот упрощенная версия:
var url = "https://api.weatherbit.io/v2.0/forecast/daily?city=london,gb,&key=f0e406af6ebf4937862f9f50ae78125b";
function getWeather(){
$.getJSON( url, function( data ) {
var items = [];
items.push("<li>"+data.city_name+"</li>");
items.push("<li>"+data.lon+"</li>");
items.push("<li>"+data.timezone+"</li>");
items.push("<li>"+data.lat+"</li>");
items.push("<li>"+data.state_code+"</li>");
$( "<ul>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
});
}
getWeather();
Вам не нужен al oop. Фактически, из того, что вы пытаетесь сделать, al oop не имеет смысла, если все, что вы пытаетесь получить, - это указанные c значения.
В вашем коде вы l oop над каждым ключом в объекте данных и создавайте новый объект с каждой итерацией, который затем помещается в ваш массив элементов. Вы также пытаетесь получить доступ к неопределенным значениям.
Ответ сверху неверен, поскольку он проходит через все ключи в объекте, который сам может быть объектом, и приводит к некорректному выводу, например [объект].
Посмотрите документацию на mozilla: Javascript - Работа с объектами