相关疑难解决方法(0)

主要javascript引擎中JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少?

请使用以下代码示例:

var myObject = {};
var i = 100;

while (i--) {
    myObject["foo"+i] = new Foo(i);
}

console.log(myObject["foo42"].bar());
Run Code Online (Sandbox Code Playgroud)

我有几个问题.

主要引擎(IE,Mozilla,Chrome,Safari)使用什么样的数据结构来存储键值对?我希望它是一种二进制搜索树,但我认为它们可能会使用链表(因为迭代是按插入顺序完成的).

如果他们确实使用搜索树,它是自我平衡的吗?因为具有传统搜索树的上述代码将创建不平衡树,导致用于搜索的O(n)的最坏情况场景,而不是用于平衡树的O(log n).

我只是问这个,因为我将编写一个库,需要从数据结构中有效地检索密钥,虽然我可以实现自己的或现有的红黑树,但我宁愿使用本机对象属性,如果它们是足够有效.

javascript time-complexity javascript-engine javascript-objects data-structures

10
推荐指数
1
解决办法
3434
查看次数

是否有任何保证在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
查看次数