Javascript:以时间戳为键的数组
Javascript: Array with Timestamp as keys
我想要一个数组,其中时间戳作为键,数字作为值。通过这种方式,我想跟踪有多少辆汽车进入或离开停车场,以及有多少辆汽车同时停在停车场。
基本:- 获取停车操作列表,包括每笔交易的输入日期和退出日期- 将所有这些日期放入一个数组中,其中时间戳作为键,如果输入日期,则为 += 1,退出日期为 -=1- 按日期排序- 浏览排序数组并添加到计数器,跟踪是否达到新的最大值
var result = [];
var counter = 0;
var max = 0;
//SELECT enterTS, exitTS FROM parking;
// validated, that works
while (!rs.eof) {
var es = rs.fields(1).toString();
var dd = rs.fields(2).toString();
result[es] += 1; //might happen at the same time with exit or other entries
result[dd] -= 1;
alert('Start' + es); //correct timestamp
alert('Array' + result[es]); //shows NaN
}
result.sort();
for (var key in result) {
counter += result[key];
if(counter > max){
max = counter;
}
}
感谢您的任何帮助。我知道这不是一个有效的代码片段,但是如果没有数据连接,这很棘手。我已经尝试了关联数组,但无法理解如何在此示例中使用。
再次感谢,FJ
使用对象,而不是数组。
var result = {};
现在要填充它,您只需:
result[es] = result[es] + 1 || 1
你的for...in
循环应该工作(但为了理智,你应该使用.hasOwnProperty
(。
for (var key in result) {
if (result.hasOwnProperty(key)) {
counter += result[key];
if(counter > max){
max = counter;
}
}
}
您的NaN
结果是因为您正在这样做:
result[es] += 1;
由于result[es]
是未定义的(因为您从未为其赋值(,因此undefined + 1
NaN
(不是数字(。
您不能将字符串用作数组的索引;这相当于将数组用作对象。即使可以,逻辑也是错误的,因为对数组进行排序会排序值,而不是索引。
我建议您创建一个停车事件对象数组,并使用自定义比较函数对其进行排序。像这样的东西(未经测试(:
var result = [];
var counter = 0;
var max = 0;
//SELECT enterTS, exitTS FROM parking;
// validated, that works
while (!rs.eof) {
var es = rs.fields(1).toString();
var dd = rs.fields(2).toString(); // I'm assuming this is the exit time
// create two events: one for entry and one for exit
result.push({time: es, change: 1});
result.push({time: dd, change: -1});
}
// sort based on event time
result.sort(function(a, b){ return a.time.localeCompare(b.time); });
// scan events, tracking current parking population
for (var key in result) {
counter += result[key].change;
if(counter > max){
max = counter;
}
}
相关文章:
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 从javascript数组获取php的日期时间
- 在jquery中对时间数组进行排序
- 添加时间数组的元素
- 如何在数组中循环,等待每个项目之间的时间
- 用javascript将日期时间数组拆分为子日期
- 70%的时间运行JavaScript函数,从函数数组中随机选择
- 如何对Javascript Unix时间戳数组进行排序
- 如何测量大型数组的加载时间
- 使用 javascript 每隔一段时间在 html 上显示帖子数组中的某些帖子
- Javascript:以时间戳为键的数组
- 根据天数和月数显示时间戳
- 按时间戳对对象数组进行排序
- 使用php和json将mysql时间戳数组转换为javascript日期数组
- 正在分析字符串以获取与单词相关联的时间戳数组
- 多维数组和时间戳
- 我如何寻找和采取快照从时间戳存储在数组中的秒/ NO jQuery
- 如何匹配和获取日期从时间戳数组在js
- 将时间戳的 Javascript 数组按小时、天分解为较小的数组
- 包含时间戳的数组.当当前分钟中的秒=数组中每个时间戳值的秒时,从数组中推送