У меня есть два массива, содержащие объекты. Один выглядит так:
const seatGeekEvents = [
{
datetime_local: "2020-09-15T20:00:00",
venue: {
name: "House of Blues - Boston",
},
},
]; ...
а другой вот так:
const hourlyForecast = [
{
clouds: 40,
dt: 1600200000,
temp: 67.44,
},
]; ...
Я хотел бы сделать функцию, которая просматривает объекты в массивах, выясняет, совпадают ли значения времени в объектах, и если они совпадают, возвращает данные из объектов, которые имеют совпадающие времена. Позже я буду отображать данные с помощью HTML.
Конечная цель здесь состоит в том, чтобы создать html-таблицу данных о событиях с данными о погоде на момент начала события. Объекты являются ответами, возвращаемыми из выборки.
Вот функция, которую я придумал для поиска совпадений:
const getDataToDisplay = (seatGeekEvents, hourlyForecast) => {
const dataToDisplay = [];
for (i = 0; i < seatGeekEvents.length; i++) {
const matches = [];
for (j = 0; j < hourlyForecast.length; j++) {
if (
formatEventTime(seatGeekEvents[i].datetime_local) ===
formatWeatherTime(hourlyForecast[j].dt)
) {
matches.push(seatGeekEvents[i], hourlyForecast[j]);
}
}
return matches;
}
return dataToDisplay;
};
console.log(getDataToDisplay(seatGeekEvents, hourlyForecast));
Функции форматирования, которые я использую для покрытия dt и datetime_local, выглядят так:
const formatEventTime = (startTimeUTC) => {
const date = new Date(startTimeUTC);
return date.toLocaleTimeString("en-US", {
hour: "2-digit",
minute: "2-digit",
weekday: "long",
});
};
const formatWeatherTime = (forecastTimeStamp) => {
const milliseconds = forecastTimeStamp * 1000;
const dateObject = new Date(milliseconds);
return dateObject.toLocaleTimeString("en-US", {
hour: "2-digit",
minute: "2-digit",
weekday: "long",
});
};
Я хотел бы понять, почему мой getDataToDisplay() возвращает пустой массив. Это просто проблема форматирования времени? Спасибо
parseISO
для проверки на равенство с отметкой времени unix, с которой я ее сравниваю? Я предполагаю, что мне понадобится другая функция для анализа временных меток unix изhourlyForecast
? 22.09.2020new Date(unixTimestamp * 1000)
дает вам эквивалентную дату ECMAScript. Сравните подальше. 23.09.2020