[英]Best way to store a huge list with hashes in Javascript
我有一个包含10.000个条目的列表。
例如
myList = {};
myList[hashjh5j4h5j4h5j4]
myList[hashs54s5d4s5d4sd]
myList[hash5as465d45ad4d]
....
我不使用数组(0,1,2,3),因为我可以非常快速地检查
->此哈希是否存在。
if(typeof myObject[hashjh5j4h5j4h5j4] == 'undefined')
{
alert('it is new');
}
else
{
alert('old stuff');
}
但是我不确定,这是一个好的解决方案吗?
处理具有10.000个条目的对象可能是一个问题吗?
编辑:
我尝试构建一个仅显示新提要的rss提要阅读器。 因此,我从链接(每个新闻都有一个uniqe链接)计算出哈希并将其存储在对象(mongoDB)中。 顺便说一句:10.000个条目不是正常情况(但是有可能)
您可以使用in
运算子:
if ('hashjh5j4h5j4h5j4' in myList) { .. }
但是,这对于对象原型链中的成员也将返回true
:
Object.prototype.foo = function () {};
if ("foo" in myList) { /* will be true */ };
要解决此问题,可以改用hasOwnProperty
:
if (myList.hasOwnProperty('hashjh5j4h5j4h5j4')) { .. }
尽管您自己可能尚未向Object.prototype
添加方法,但不能保证您使用的其他第三方库没有; 顺便说一句,扩展Object.prototype
,因此您不应该这样做。 为什么? ; 因为您不应该修改自己不拥有的东西。
我的建议:
进一步的想法:
10.000是很多。 您可以考虑将散列存储在数据库中,并使用ajax查询它。 查询一个散列可能需要更长的时间,但是页面加载速度更快。
无论如何,这在现代计算机上的现代浏览器中都不是问题。
1万个条目(每个条目占用50个字节)仍将占用少于500KB的内存。
只要将js压缩后,带宽就不会出现问题-但是请尽早提供数据,以免阻塞可见的页面加载性能。
总而言之,除非您希望迎合手机需求,否则您的解决方案就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.