6

我有一个日期数组,我需要多次为这些日期执行一些计算。所以我决定使用 memoization 来缓存结果。

但是,我不确定是否可以使用Dateobject 作为键。我希望比较日期可能比比较字符串慢,因此使用日期的字符串表示形式作为键可能是有意义的。

所以我的问题是,哪个更好地用作键、字符串或日期来访问 JavaScript 对象中的值。

4

1 回答 1

13

我认为您可以改用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)"]
于 2013-04-07T11:18:17.067 回答