相关疑难解决方法(0)

Javascript对象Big-O

来自Java,Javascript对象让我想起了Java中的HashMap.

使用Javascript:

var myObject = {
    firstName: "Foo",
    lastName: "Bar",
    email: "foo@bar.com"
};
Run Code Online (Sandbox Code Playgroud)

Java的:

HashMap<String, String> myHashMap = new HashMap<String, String>();
myHashMap.put("firstName", "Foo");
myHashMap.put("lastName", "Bar");
myHashMap.put("email", "foo@bar.com");
Run Code Online (Sandbox Code Playgroud)

在Java HashMap中,它使用密钥的hashcode()函数来确定存储和检索的存储区位置(条目).大多数时候,对于诸如put()和get()之类的基本操作,性能是恒定时间,直到发生哈希冲突,这对于这些基本操作变为O(n),因为它形成链表以便存储相互冲突的条目.

我的问题是:

  1. Javascript如何存储对象?
  2. 运营的表现如何?
  3. 是否会出现任何会像Java中那样降低性能的碰撞或其他情况

谢谢!

javascript performance big-o

16
推荐指数
1
解决办法
2000
查看次数

标准 JavaScript 对象哈希表实现中可能发生的冲突?

我最近碰巧想到了 JavaScript 中的对象属性访问时间,并遇到了这个问题,它似乎合理地表明它应该是常数时间。这也让我想知道对象属性键长度是否有限制。显然现代浏览器支持长达 2^30 的密钥长度,这对于哈希函数来说似乎相当不错。那说,

  • 有人知道JS引擎使用的哈希函数类型吗?

  • 是否可以通过实验创建 JavaScript 属性访问器的冲突?

javascript algorithm properties hash-function time-complexity

8
推荐指数
1
解决办法
942
查看次数

是否有任何保证在JavaScript中访问对象属性的恒定时间?

这是关于我在亚马逊采访时与面试官进行的辩论.

我来创建一个对象:

var Obj = {};
Obj['SomeProperty'] = function ( ) { console.log("Accessed some property"); };
Obj[69] = true;
Run Code Online (Sandbox Code Playgroud)

JavaScript中是否有任何保证当我随后访问这两个属性时Obj['SomeProperty'],Obj[69]以及相应的值function ( ) { console.log("Accessed some property"); };69在O(1)时间内查找?我知道接入运营商[]提供了一个经验丰富的程序员的印象是,他处理一个O(1)查找结构,但不能将它有可能为一个JavaScript引擎来实现Object的方式,使得性能为O抬头(1 )?

javascript complexity-theory time-complexity data-structures

4
推荐指数
1
解决办法
1139
查看次数