Javascript:什么查找更快:array.indexOf vs对象哈希?

ava*_*sin 17 javascript arrays object

我必须执行LOT查找,同时解析xmlStream如果我需要一些标签或没有.

我可以使用array.indexOf方法(我在数组中有约15项)或使用object [key]查找.

对我来说,第二种解决方案在理论上似乎更有效,但在我的代码中看起来并不好看.但如果真的更有效率,我会保持原样.

例如:

var tags = [
    'tag1',
    'tag2',
    'tag3',
    ...
];

var tags2 = {
    'tag1' : null,
    'tag2' : null,
    'tag3' : null,
}

tags.indexOf(value) // exists?
tags2[value] // exists?
Run Code Online (Sandbox Code Playgroud)

Ste*_*rya 30

Object键查找比快Array.indexOf().你可以在jsperf上查看它.

检测结果:

排列

10000项索引:26,547次操作/秒
100000项索引:2,493次操作/秒

宾语

10000个项目的查找键:152,115个操作/秒
100000个项目的查找键:150,450个操作/秒

  • 这很重要。感谢您链接到测试 (2认同)

小智 10

那么,性能取决于您的设置大小和访问模式.一般来说,indexOf是O(n)而hash是O(1),但是,因为你在集合中只有大约15个项目,并且假设每个访问完全独立且等概率,哈希的优势实际上并不存在.