【发布时间】:2018-09-13 18:29:22
【问题描述】:
我有一个排序的 JavaScript 映射结构,用于存储基于时间的对象状态。
Map(key:time(inMilli), value: {object attributes})
我需要完成的是能够根据开始时间和结束时间检查地图,以获取所有值的集合,而无需遍历整个地图。
//currently using something like this. But would like to not compare against entire map of times
let map = dataService.getTimeData()//returns map of all objects
let updates = getRange(someTime, someTime);
function getRange(start, stop){
let foundValues = [];
//if start is end or after end time
if(start >== stop)return [start];
//search map for values
for([key,value] of map){
if(key > start && key < stop)foundValues.push(key)
}
return foundValues;
}
【问题讨论】:
-
我没有使用地图,但你不能只使用
map.keys()并对其进行迭代吗? -
是的,但这仍然需要遍历整个地图。我正在寻找的是一种从本质上获取两个索引并且只在我需要的时间进行迭代的方法。
-
正如我所说,我没有使用过 Map,但根据我对 Maps 的了解,我认为如果不检查整个数组,您将无法完成此操作。跨度>
-
是的,这是我最初的假设,但我真的希望有人能找到方法哈哈。我确实找到了一个库并发布在允许这样做的解决方案中,并且对于客户端数据存储和检索非常方便。尚未测试性能,但看起来相当不错。
标签: javascript es6-map