Javascript 按时间和值的数量对数组进行排序和映射

Javascript 按时间和值的数量对数组进行排序和映射,javascript,arrays,sorting,timestamp,mapping,Javascript,Arrays,Sorting,Timestamp,Mapping,我有一个对象数组的以下输入: [ { timestamp: 1602754921328, product: "productA" }, { timestamp: 1602754921942, product: "productB" }, { timestamp: 1602754924160, product: "productA" }, { times

我有一个对象数组的以下输入:

[
  {
    timestamp: 1602754921328,
    product: "productA"
  }, 
  {
    timestamp: 1602754921942,
    product: "productB"
  },
  {
    timestamp: 1602754924160,
    product: "productA"
  },
  {
    timestamp: 1602757547704,
    product: "productB"
  },
  {
    timestamp: 1602757563480,
    product: "productC"
  },
  {
    timestamp: 1602757567032,
    product: "productB"
  }
]
其中,时间戳是unix时间戳,产品为任意字符串值。 输入数组包含从一天开始到一天结束的值,因此为24小时

目标是将这些值拆分为4小时的段,因此需要6个不同的段,并在这些段中填充值在4小时内在数组中出现的次数

预期产出将是:

[
  {
    name: "productA",
    data: [0, 0, 2, 0, 0, 0]
  },
  {
    name: "productB",
    data: [0, 0, 1, 2, 0, 0]
  },
  {
    name: "productC",
    data: [0, 0, 0, 1, 0, 0]
  },
]
输出由在输入数组中找到的每个值组成,一个数组(我们称之为数据)由6个值组成,其中每个值都是在特定的4小时内在数组中找到值的次数

我已成功地将输入数据拆分为6个数组,分别对应于4个小时的时段,但我不确定这是否是第一步的正确方法,并且我在从这一步到所需输出时遇到了困难


感谢您的指导,我正在使用javascript编写函数。

您可以将产品分组,并获得一个索引,用于计算时间戳的某个时段

const
数据=[{时间戳:1602754921328,产品:“productA”},{时间戳:1602754921942,产品:“productB”},{时间戳:1602754924160,产品:“productA”},{时间戳:1602757547704,产品:“productB”},{时间戳:1602757563480,产品:“productC”},{时间戳:1602757567032,产品:“productB”},
getIndex=t=>Math.floor(Math.floor(t/1000/60/60)%24/4),
结果=Object.values(data.reduce((r,{timestamp,product:name})=>{
如果(!r[name])r[name]={name,数据:数组(6).fill(0)};
r[name].data[getIndex(timestamp)]++;
返回r;
}, {}));
控制台日志(结果)
。作为控制台包装{最大高度:100%!重要;顶部:0;}