最佳答案
正如在这个答案的更新3中明确指出的那样,这个符号:
var hash = {};
hash[X]
实际上并不散列对象X
;它实际上只是将X
转换为一个字符串(如果它是一个对象,则通过.toString()
,或其他一些用于各种基本类型的内置转换),然后在“__abc3”中查找该字符串,而不散列它。对象相等性也不检查-如果两个不同的对象具有相同的字符串转换,它们将相互覆盖。
鉴于此,JavaScript中是否有有效的hashmap实现?
(例如,javascript hashmap
的第二个谷歌结果产生一个对于任何操作都是O(n)的实现。其他各种结果忽略了具有等效字符串表示的不同对象会相互覆盖这一事实。