我有一组包含数字对的随机数据。
[{width: 123.89000000, length: 4.50},{width: 23.45360, length: 7.20}, ...]
我想查找宽度以获得O(1)时间的长度,我希望数组按宽度排序。
在Javascript / NodeJS中存储此数据结构的最佳方式是什么?我测试了
var hashtable = {};
hashtable[17400.23400000] = { width: 17400.23400000, length: 4.5 };
console.log(hashtable[17400.234]); // check that the key is treated like a real number
它似乎有效,但是它呢?
编辑:
为澄清要求,让我解释一下情况:
我实时从websocket获取宽度和长度数据。宽度是离散的,最多4个小数位,我需要更新相应的长度作为数据流,有时添加新的宽度,有时删除现有的宽度。因此,我需要一个快速的查找解决方案。
然后在每个不确定的x毫秒上,我需要将这个宽度和长度数组的快照作为排序数组返回。此数组中的对数可能约为260,000。理想情况下,x应尽可能小。
目前我正在使用哈希表并使用lodash对请求进行排序,但我想知道是否有更快的数据结构是合适的。
答案 0 :(得分:0)
不知道这是否对你有所帮助,但我会做这样的事情......虽然这里不需要排序接缝..
// example array;
var a = [{
width: 123.89000000,
length: 4.50
}, {
width: 23.45360,
length: 7.20
}, {
width: 56.35360,
length: 2.20
}, {
width: 254.1260,
length: 1.20
}];
// sort the array
a.sort(function(a, b) {
return a.width < b.width
});
// lookup fn
a.O = function(lookup) {
var flag = 0;
for (var i = 0; i < a.length; i++) {
if (lookup == a[i].width) return a[i].length;
}
return false;
};
// exec lookup
console.log(a.O(123.59), a.O(123.89));