Как получить минимальную и максимальную температуру за день, из прогноза погоды на 5 дней JS? - PullRequest
0 голосов
/ 18 марта 2019

Я создаю веб-приложение, которому нужно показывать прогноз погоды на 5 дней. Я получаю данные от https://openweathermap.org/forecast5 Моя идея состоит в том, чтобы помещать информацию за каждый день, используя данные из 8 или 8 индексов массива. Извините, мой плохой английский, вот скриншот для лучшего понимания - https://imgur.com/a/4RHjZ5g Вот пример API - https://samples.openweathermap.org/data/2.5/forecast?q=M%C3%BCnchen,DE&appid=b6907d289e10d714a6e88b30761fae22

Как видно из снимка экрана, индекс 0 получает данные о погоде за последние 3 часа (12, 15, 16 и т. Д.). Почти в каждом случае я получаю данные за каждый день.

Я не могу понять, как получить минимальное и максимальное значение для каждого дня. Если данные за сегодня с 15:00 по индексу 0, я не могу получить информацию до этого времени. Я могу получить только температуру с 15:00 до 00:00.

В первый день я получаю эту информацию от API:

.list[0].dt_txt
.list[0].main.temp
.list[0].weather[0].description

для вторых 8, для третьих 16 и т. Д. *

Ответы [ 3 ]

0 голосов
/ 18 марта 2019

согласно ответу, полученному от данного API

let weather=" assign response got from API to here";

let minArray=[];
let maxArray=[];  
for (let i of weather.list)  
 {  minArray.push(Number( i.main.temp_min)) ; 
    maxArray.push(Number(i.main.temp_max));  }
  console.log("min temp is "+ Math.min(...minArray));
 console.log("max temp is "+ Math.max(...maxArray));
0 голосов
/ 18 марта 2019

Как предлагалось ранее, используйте history API . Чтобы получить значения для Мюнхена на сегодня + следующие 4 дня, используйте что-то вроде:

const getStartAndEndDateTimestamps = increment => {
    let startDate = new Date();
    startDate.setDate(startDate.getDate() + increment);
    startDate.setHours(0,0,0,0);
    let endDate = new Date();
    endDate.setDate(endDate.getDate() + increment);
    endDate.setHours(23,59,59,999);
    return {
        start: startDate.valueOf(),
        end: endDate.valueOf()
    };
};

const city = 'München';

[0, 1, 2, 3, 4].forEach(increment => {
    const timestamps = getStartAndEndDateTimestamps(increment);
    const requestUrl = `http://history.openweathermap.org/data/2.5/history/city?q=${encodeURIComponent(city)}&type=hour&start=${timestamps.start}&end=${timestamps.end}`;
    // get & process API data
});
0 голосов
/ 18 марта 2019

Возможно, вы могли бы использовать историческую версию API .Возможно, другим вариантом может быть создание файлов cookie на стороне сервера или небольшой базы данных для исторических значений.

...