【发布时间】:2012-09-03 03:33:48
【问题描述】:
对于我最近编写的一些算法,我认为散列会非常好。我认为我可能只使用对象中的成员变量作为键值对。我不确定这是否是最佳选择,因为我真的不知道幕后发生了什么。我还认为 V8 的做法与其他环境不同。然而,我确实想象查找成员变量会很快(希望如此)?
话虽如此,我想知道在 JavaScript 对象中写入、读取、创建和删除成员变量的运行时复杂度是否都是 O(1)。如果环境存在差异(v8 与其他),它们是什么?
【问题讨论】:
-
如果您想通过某个字段查找您的对象,为什么还要关心添加和删除? ID 不应在对象实例化后更改。
-
@aviad 我想添加和删除没什么大不了的。我没有看到超过几百万对的用例,尤其是对于这个用例来说,这很可能是荒谬的。再说一次,人们可能希望将此特定功能用于其他事情。我想提供一些指导。
-
“使用对象中的成员变量作为键值对” - 这就是“成员变量”的含义,不是吗?
-
@nnnnnn 好吧,我不一定看到任何关于性能的保证。它们是键值对,但您可以对任何语言的任何变量都这么说。
-
“它们是键值对,但你可以说任何语言的任何变量” - 不,你不能:在大多数语言中,字符串、数字和布尔值是只是没有关联键的值。我的观点是 JS 对象的工作是保存键/值对的集合(其中值可能是对函数或其他对象的引用)。我知道这对您关于性能的问题没有帮助。