【问题标题】:Is there a javascript library or native way to handle hashmaps with multi keys?是否有 javascript 库或本地方式来处理具有多键的哈希图?
【发布时间】:2017-07-05 22:54:03
【问题描述】:

在 javascript 中有一个像 {} 这样的对象,您可以在其中拥有只有 1 个值的键。但总的来说,如果我想要一个键是多值的哈希图,比如它可能是映射到一个值的 3 或 6 或 7 个整数,等等......如果有最好的方法来本地处理它,或者是否有它的库?

谢谢

【问题讨论】:

  • 嗯,有一个新的 Map 类,但你的应用程序的基本问题是 JavaScript 中没有像 Java 中的 .hashValue().equals() 约定(例如)。因此,您所要做的就是确定关键相等性的本机相等性比较。
  • 没关系,原生相等性可以比较键,因为键都是整数。
  • 这是经典的XY Problem。你实际上想做什么?为什么需要这样的哈希映射?
  • @omega 不,这不好,因为(至少根据问题)希望将键与某些自定义过程(多个值)进行比较。 Map 中的条目有一个 single 键。键可以是对象或数组,但相等性的比较(基本上)使用===
  • 刚刚注意到,如果我有一个键,比如 [1,2,3,4],那么取回它就行不通了,因为 [1,2,3,4] !== [ 1,2,3,4]。有没有办法解决这个问题?

标签: javascript hash hashmap


【解决方案1】:

您可以使用带有数字的数组并默认使用逗号连接它。然后将字符串作为对象的键。

var hash = Object.create(null);

hash[[1, 2, 4, 5].join()] = 'foo';
console.log(hash[[1, 2, 4, 5].join()]);
hash[[1, 2, 4, 5].join()] = 'baz';
console.log(hash[[1, 2, 4, 5].join()]);
hash[[1, 2, 4, 5, 7].join()] = 'bar';
console.log(hash);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2012-12-26
    • 2016-02-28
    • 2010-10-15
    • 2013-05-04
    • 2017-03-31
    相关资源
    最近更新 更多