JavaScript HashMap 等效项:探索高效的实现
在 JavaScript 中,使用符号“hash[X]”直接访问对象的属性并不对对象进行哈希处理。相反,它将其转换为字符串并检查该字符串在常规字典中是否存在,而不应用任何哈希机制。此外,不考虑对象相等性,导致覆盖具有相同字符串表示形式的对象。
要解决此问题并实现高效的哈希映射,建议使用唯一键手动哈希对象,然后利用生成的字符串作为 JavaScript 字典的键。这种方法提供了对索引的控制,而不会产生性能开销。
这是一个示例实现:
<code class="javascript">var key = function(obj) { // Generate a unique object-dependent key return obj.totallyUniqueEmployeeIdKey; // Just an example }; var dict = {}; dict[key(obj1)] = obj1; dict[key(obj2)] = obj2;</code>
通过这种方式,您可以利用 JavaScript 对象的内置哈希表,同时减轻潜在的冲突具有默认属性。键的选择可以根据对象的独特特征进行定制。
更新(2014):
这个解决方案的简单性值得进一步阐述。 JavaScript 的底层对象实现了哈希表,从而无需模拟它们。因此,谨慎的做法是识别对象本身内的唯一键。通过使用 JavaScript 的对象作为键值存储,您可以利用其本机哈希表实现。
ECMAScript 6 解决方案:
ECMAScript 6 引入了 Map 和 Set 数据结构,提供高效的哈希功能。映射允许任何值作为键(包括对象),从而无需手动生成键。此外,它们保持插入顺序,允许可预测的迭代。
总之,在寻找等效的 JavaScript 哈希映射时,请考虑以下选项:
以上是如何在 JavaScript 中实现 HashMap 功能:手动哈希、字符串转换或使用 Map 和 Set?的详细内容。更多信息请关注PHP中文网其他相关文章!