当我们从带有索引的数组中获取值时,我们可以在constant
时间内完成。
例如:
var array = [3,4,56, ......];
var val = array[3]; //running time is constant
我们假设我们从具有属性
的对象中获取值例如:
var obj = {prop1 : 3, prop2 : 4, prop3 : 56, ......};
var val = obj.prop3; //running time?
运行时间是多少?它是linear
还是constant
?
提前谢谢你......
答案 0 :(得分:1)
我们也可以使用
val= obj["prop3"];
也许它像php中的关联数组一样被索引。所以运行时间会不变。
编辑:我还发现此链接http://www.quirksmode.org/js/associative.html将对象作为关联数组进行讨论,以便对它们进行哈希处理。 也许我们可以说字符串(对象属性的名称)有一个长度,因此散列将是O(n)线性但是在散列之后,当他有索引时它将是的 O(1)强>
我们必须多考虑一下。
答案 1 :(得分:1)
这取决于使用的Javascript引擎。大多数JS引擎将属性功能实现为Dictionary,以支持按需创建属性。因此,对于大多数情况,它是线性的。但是,有更多优化的解决方案,您可以检查以下内容: