Спасибо за всю помощь заранее.Я постараюсь описать это как можно лучше.
То, что я пытаюсь сделать, это получить список цен из массива, который содержит цены, обновляемые каждую минуту.В частности, я хотел бы получить список каждой цены за каждый час за последние 24 часа.Таким образом, действуют 24 цены за один день.У каждой цены есть временная метка, поэтому я использую momentJS isBefore
и isAfter
для сужения поиска.
Приведенный ниже код показывает, как я получаю нужные мне данные за последние два часа.Это отлично работает.Но я не чувствую себя правильным, повторяя это 24 раза.Цикл должен быть в состоянии дать мне то, что мне нужно, однако я не уверен, как это реализовать.Большое спасибо за любую помощь.Извините, если я не описал проблему хорошо
const lastHourArray = [];
const lastHourArray2 = [];
lodash.forEach(tickerHistoryData, (data) => {
const dateNow = moment();
const prevHour = moment().subtract(1, 'hours');
const prevTwoHours = moment().subtract(2, 'hours');
const instanceDate = moment(data[0]);
const isItAnHourAgo = instanceDate.isBefore(dateNow) && instanceDate.isAfter(prevHour);
const isItTwoHoursAgo = instanceDate.isBefore(prevHour) && instanceDate.isAfter(prevTwoHours);
if (isItAnHourAgo) {
const hourObject = {
hour: 1,
price: data[4],
};
lastHourArray.push(hourObject);
}
if (isItTwoHoursAgo) {
const hourObject2 = {
hour: 2,
price: data[4],
};
lastHourArray2.push(hourObject2);
}
});
tickerInstruments[findInstrument.productSymbol].hourlyPrice.push(lastHourArray[lastHourArray.length - 1]);
tickers[findInstrument.name].hourlyPrice.push(lastHourArray[lastHourArray.length - 1]);
tickerInstruments[findInstrument.productSymbol].hourlyPrice.push(lastHourArray2[lastHourArray2.length - 1]);
tickers[findInstrument.name].hourlyPrice.push(lastHourArray2[lastHourArray2.length - 1]);