访问对象中数据的复杂性
在我作为日常工作的一部分的一些项目中,我需要访问非常大的JS对象中的数据(数以千计的键值对)。 我试图提高我的代码的效率,所以我想出了几个问题:
- 当访问这样一个对象中的字段时,JS的运行时复杂度是多less? 我最初的预感是O(n)
- 通过点符号或括号表示访问时是否有区别? (例如
obj.field
vsobj[field]
) - 我猜测对于不同的运行时引擎有不同的答案 – 有没有一个地方我可以看到它们之间的区别?
Javascript对象实际上是Hashes,所以所有引擎的复杂度是O(1)
。
obj.field
是obj['field']
的别名,所以它们具有相同的性能。
你可以在这里find一些JS哈希性能testing,不幸的是只有你的浏览器引擎。