2014-12-22 36 views
0

當我們從索引中獲取數組的值時,我們可以在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

預先感謝您...

回答

1

我們也可以使用

val= obj["prop3"]; 

也許是索引就像在PHP關聯數組。所以運行時間將是不變的。

編輯:我還發現這個鏈接http://www.quirksmode.org/js/associative.html談論對象作爲關聯數組,所以他們被哈希。 也許我們可以說,字符串(對象屬性的名稱)有一個長度,所以哈希將是O(n)線性但在散列之後,當他有索引時它將是O(1 )

我們不得不多想一想。

1

這取決於所使用的JavaScript引擎。大多數JS引擎都將屬性功能實現爲Dictionary,以支持按需創建屬性。因此,在大多數情況下,它是線性的。不過,也有更多的優化的解決方案,您可以檢查以下內容:

https://developers.google.com/v8/design?csw=1#prop_access