我有一个日期数组,我需要多次为这些日期执行一些计算。所以我决定使用 memoization 来缓存结果。
但是,我不确定是否可以使用Date
object 作为键。我希望比较日期可能比比较字符串慢,因此使用日期的字符串表示形式作为键可能是有意义的。
所以我的问题是,哪个更好地用作键、字符串或日期来访问 JavaScript 对象中的值。
我有一个日期数组,我需要多次为这些日期执行一些计算。所以我决定使用 memoization 来缓存结果。
但是,我不确定是否可以使用Date
object 作为键。我希望比较日期可能比比较字符串慢,因此使用日期的字符串表示形式作为键可能是有意义的。
所以我的问题是,哪个更好地用作键、字符串或日期来访问 JavaScript 对象中的值。
我认为您可以改用getTime方法来比较 Date 对象的数字版本。应该更快,加上跨浏览器和 SO 的字符串表示的 IMVHO 更可靠,以及它们的语言环境,并且也更容易操作。
如果您不使用Map或WeakMap而只是使用普通对象,请注意将Date
对象作为对象的键传递将自动获取它的字符串版本(toString
将被调用):
var now = {};
now[new Date()] = true;
console.log(Object.keys(now)); // ["Sun Apr 07 2013 13:21:17 GMT+0200 (CEST)"]