2013-04-07 82 views
2

我有日期的數組,我需要執行這些日期一些計算不止一次。所以我決定使用記憶來緩存結果。使用字符串或日期作爲記憶的對象鍵。

不過,我不知道也沒關係使用Date對象作爲重點。我期望比較日期可能比比較字符串慢,所以也許使用日期的字符串表示作爲鍵是有意義的。

所以我的問題是,這是更好的爲重點,字符串或日期來使用,在JavaScript對象訪問值。

回答

7

我想你可以使用getTime方法來代替,比較你的Date對象的數字版本。應該更快,再加上更可靠的跨瀏覽器和SO的字符串表示的IMVHO,以及它們的語言環境,並且可以更容易被操縱。

如果你不使用MapWeakMap但只是普通的對象,請注意傳遞Date對象作爲對象的鍵就可以自動得到它的字符串版本(toString將被調用):

var now = {}; 
now[new Date()] = true; 


console.log(Object.keys(now)); // ["Sun Apr 07 2013 13:21:17 GMT+0200 (CEST)"] 
+0

注意即使你使用數字鍵,他們仍然會被比作字符串。對象鍵始終是唯一的字符串。 – georg 2013-04-07 11:35:17

+1

我不確定OP是使用普通對象還是'Map' /'WeakMap' - 它沒有被指定。在普通對象的情況下,確保鍵總是字符串。但使用'getTime'時,轉換速度比'Date'的字符串表示更快,以防萬一操作 - 或找回Date對象。 – ZER0 2013-04-07 11:40:10

相關問題