我有一个日志分析脚本来填充复杂的可视化。
想象一个 Activity 对象的数组(称为“log”),每个对象都采用以下形式:
{
name:foo,
activities:[
{time:t, action:a},
{time:t, action:a},
{time:t, action:a},
...
]
}
数组中最多有 75 个活动对象,每个包含 400-600 个动作的数组(自前一天午夜起每 5 分钟一个时间段)。
给定已知的活动名称(上面的 foo)和活动数组中已经存在的时间,我需要更新关联的操作。
每个名称都是唯一的,并且每次在数组中以 5 分钟为增量按升序排列。
因为每次更新图表时我都必须这样做超过 1000 次(所以平均要更新 1000 个值和要绘制 1000*500*60 点),性能是一个相当关键的问题......
在 jq 中循环比我能写的任何东西都要高效,所以,目前,我有
n = "foo";
t = new Date(y,mm,d,h,m).toLocaleString() // matches a time stamp in the log
$.grep($.grep(log, function(n, i)
{
return (n.name == n)
}
)[0].activities, function(n, i)
{
return (n.time == t)
}
)[0].action = "bar";
这似乎奏效了,但我花了这么长时间,而且我和自己发生了很多争论,以至于我没有信心。
我错过了更好的方法吗?