首页 > 解决方案 > 试图从javascript中的时间戳数组和价格数组中获取每小时分钟间隔的平均价格

问题描述

所以我正在尝试为理论股票创建价格跟踪图表。我已经通过两个数组接收所有历史价格:一个是unix时间戳数组,另一个是简单价格数组,如下所示:

var times = [
 "1614818710",
 "1614818728",
 "1614818734",
 "1614818818", 
 "1614818905",
 "1614818986",
 "1614819013"];
 
var prices = [
 "0.15",
 "0.13",
 "0.10",
 "0.17", 
 "0.15",
 "0.14", 
 "0.15"];

虽然我可以很容易地用相应的价格绘制时间戳,但我真的很想以 1 分钟间隔、5 分钟间隔等绘制图表;并坚持如何在纯javascript中实现这一目标。尽我所能,最简单的方法是将两者组合成一个数组数组,然后将其提供给这种类型的函数(尽管现在我只是让它与时间数组一起使用:

 var x = groupByTimePeriod(times);

 async function groupByTimePeriod(obj) {
    var objPeriod = {};
    var oneMin = 60 * 1000; // seconds * milliseconds
    for (var i = 0; i < obj.length; i++) {
       var d = new Date(obj[i] * 1000);
       d = Math.floor(d.getTime() / oneMin);

       // define object key
       objPeriod[d] = objPeriod[d] || [];
       objPeriod[d].push(obj[i]);
    }

    return objPeriod;
}

以上似乎是正确分组,但我被困在从这里去哪里,我无法弄清楚如何使结果数组“objPeriod [d]”成为实际的完整日期分钟,而现在它只是吐回分钟数。

基本上我想得到一个像这样的数组,时间戳是分钟,价格是每分钟的平均价格。

var avgMinPrices= [
 [1614818710][0.13],
 [1614818818][0.17],
 [1614818905][0.15],
 [1614818986][0.14], 
 [1614819013][0.15] ];

标签: javascriptarrays

解决方案


推荐阅读