【发布时间】:2013-05-08 07:31:03
【问题描述】:
我有一个这样的 JSON 对象:
"time1": {
"item1": "val1",
"item2": "val2"
},
"time2": {
"item1": "val3",
"item2": "val4"
}
...
time*的值是new Date()的值,单位是毫秒,所以time*的值的顺序是排序的。
现在我必须按 时间 搜索项目,如果键不存在,我必须采用最接近的值。 我在对象中有数千个条目,我正在考虑二进制搜索,但我不知道该怎么做。
我不能使用经典方式middle = (right+left)/2,因为中间值可能是undefined。
我不能使用二叉树,因为我有一个无法更改的已定义结构。
谢谢
【问题讨论】:
-
将值读入数组? (由
timevalue - firstTimeValue索引) -
你能举一个“时间价值*”的实际例子吗 - JSFiddle.net 会很棒
-
请记住,对象中属性的顺序是not guaranteed,因此您必须先将其转换为数组,然后才能进行有意义的二分搜索。从那里开始,它非常简单。
-
time*的值类似于 1368000928818。例如,一些连续的值是 1368000928818、1368000938821、1368000948821 和 1368000958824。您可以看到这些值之间没有共同的差异。 -
“最近的值”,还是“匹配或下一个最小值”?后者更容易一些......
标签: javascript json