如何在Javascript中循环对象并按时间戳分类?
我有一个对象数组,它有一个键,叫做如何在Javascript中循环对象并按时间戳分类?,javascript,arrays,parsing,momentjs,Javascript,Arrays,Parsing,Momentjs,我有一个对象数组,它有一个键,叫做时间戳和运动运动包含一个值,时间戳包含一个unix时间戳。我想迭代一些对象,找出它们对应的“一天中的时间”周期,然后我想将给定时间的运动值相加,并将整个对象保存在一个数组中。我希望持续时间可以改变 假设这些是我的目标 { timestamp: 1397160634, motion: 2, id: '534771d8c311731e21c75c9f' }, { timestamp: 1397160634, motion
时间戳
和运动
<代码>运动包含一个值,时间戳
包含一个unix时间戳。我想迭代一些对象,找出它们对应的“一天中的时间”周期,然后我想将给定时间的运动值相加,并将整个对象保存在一个数组中。我希望持续时间可以改变
假设这些是我的目标
{
timestamp: 1397160634,
motion: 2,
id: '534771d8c311731e21c75c9f'
},
{
timestamp: 1397160634,
motion: 3,
id: '534771d8c311731e21c75c9f'
}
现在我创建我的结果数组
var sampleDuration = 60; // Min
var minutesInDay = 1440;
var samplesPerDay = minutesInDay/sampleDuration;
var finalResultItem = []
for (var i = 0; i < samplesPerDay; i++) {
var IndividualresultArray = []
IndividualresultArray.push(60*i);
IndividualresultArray.push(0);
finalResultItem.push(IndividualresultArray);
}
这是我空白的地方,我需要最终结果看起来像这样
[[30, 5],[60, 20],[90, 5],[120, 0] .........]
[[000002400, 5],[000003000, 20],[000003600, 5],[000004200, 0] .........]
或者它甚至可能看起来像这样
[[30, 5],[60, 20],[90, 5],[120, 0] .........]
[[000002400, 5],[000003000, 20],[000003600, 5],[000004200, 0] .........]
其中,第一个值是忽略年、月和日的时间戳,只考虑一天中的时间
我已经考虑过在某种程度上使用moment.js,但我不确定如何使用。对此问题的任何帮助都将非常有用。这应该可以:
_forEach(objects, function (object) {
var date = new Date(objec.timestamp*1000);
var minuteOfDay = date.getUTCHours()*60+date.getUTCMinutes();
finalResultItem[minuteOfDay][1] += object.motion;
})
对于可变采样率,使用一个第二天
除以您的采样持续时间
,然后将其下限以获得数组索引。我为您创建了一个。运动增量逻辑应该是这样的(我在这里使用jQuery,但你明白了)
编辑:编辑后删除了一些讨论。我还使用了基于
sampleDuration
的更通用的逻辑。您在创建finalResultItem
时出错了吗?这不是你“最终结果”的格式。另外,你能澄清你想要什么作为第一个值——“只考虑一天中的时间”吗?那有什么价值?分钟?秒?是的,psudocode中有一个错误,我修复了(我想)。每个数组的第一个值应该是一个表示一天中某个时间的数字,除了格式非常随意之外,我永远不需要超过5分钟的分辨率,所以min可能是best@user379468好的,我进行了编辑以将您的更改考虑在内,并使其更加通用。让我知道这是否让你走上了正确的轨道!