【发布时间】:2018-10-01 20:57:33
【问题描述】:
提前感谢所有帮助。我会尽量描述这一点。
我要做的是从包含每分钟更新的价格的数组中获取价格列表。具体来说,我想要过去 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]);
【问题讨论】:
标签: javascript arrays object for-loop momentjs