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;}