我有一个包含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)中。 BTW:10.000次托管不是正常情况(但有可能)
答案 0 :(得分:3)
您可以使用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
是不受欢迎的,所以你不应该这样做。的为什么强>?;因为你不应该修改你不拥有的东西。
答案 1 :(得分:3)
我的建议:
进一步的想法:
答案 2 :(得分:2)
10.000非常多。您可以考虑将哈希值存储在数据库中并使用ajax进行查询。查询一个哈希可能需要更长的时间,但页面加载速度要快得多。
答案 3 :(得分:0)
现代计算机上的现代浏览器无论如何都不是问题。
每个占用50个字节的10k条目仍然会占用不到500KB的RAM。
只要js被gzip压缩,那么带宽就没问题 - 但是尽量尽量提供数据,这样它们就不会阻止感知的页面加载性能。
总而言之,除非您希望迎合手机,否则您的解决方案就可以了。