实施例1:对象键VS阵列查找性能
["member1", "member2",...,..., "member100000"]
实施例2:
{
"member1": true, // (doesn't really need values, only keys :/)
"member2": true,
"...",
"member100000": true
}
我存储部件中的每个内容片段的阵列像实施例1中,但这样做像这样,我不得不迭代通过我的数组中的49999项,找到成员50000,所以我想只是检查一个特定的键是否定义在JavaScript对象中是一个更好的方法在这里,虽然我不需要存储一个值,但只检查密钥是否未定义?
我需要的是能够检查例如。 “member50000”作为我的数组中的值存在 - 或作为我的对象内的键。
我做了一些基准测试,但我不知道我已经来到了正确的结论,或者如果我做错事,我比较:http://jsperf.com/lolda123
根据上述检测结果,将那么可以得出结论:在值为布尔(真)的对象内保存键/值对,并且if(obj["member50000"])
是最佳选择?即使没有给定密钥的财产甚至存在?正如我所看到的,根据我的测试结果,检查密钥本身的存在,在性能方面看起来会更加昂贵,但检查密钥是否存在,确实是我所需要的。
我不在乎价值,所以我在这里错过了一些东西,或者为什么更好的解决方案看起来像是通过关键点查找价值的那个,而不是只查找关键点,对象内部?
你的测试用例似乎缺少'arr.indexOf(key)'。它会返回-1,如果它没有找到它。我对结果感兴趣。 – Katana314
我试图进行基准测试的另一种方法是“新”(ES6)'Set'类型。 – Amit
除了别人的建议,如果你愿意使用jQuery,你也可以测试:'$。inArray(key,arr);' – talemyn