Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中循环对象并按时间戳分类?_Javascript_Arrays_Parsing_Momentjs - Fatal编程技术网

如何在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好的,我进行了编辑以将您的更改考虑在内,并使其更加通用。让我知道这是否让你走上了正确的轨道!