2013-04-07 59 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

相关问题