【问题标题】:How can I store multiple values per key in a hash table using Node.JS?如何使用 Node.JS 在哈希表中存储每个键的多个值?
【发布时间】:2013-10-09 13:53:57
【问题描述】:

在 javascript 中,我有一个键值对的哈希映射,例如:

"team", "aemt"
"meat", "aemt"
"car", "acr"

我想用字符串的长度存储所有匹配的值,如下所示:

{4, {"team","meat"}}
{3, {"car"}

我将如何做到这一点?

【问题讨论】:

  • 您提供的示例不是有效的对象。请更详细地说明您要达到的目标。
  • 这看起来像XY problem。请告诉我们您需要它来做什么。另外,请向我们展示您尝试过的代码,这应该是一项相当简单的任务。
  • 基本上,我想存储一个键值表,它有一个键(单词的长度)和一个值(一个单词数组)。我希望能够通过我拥有的哈希映射并将值添加到这个新表
  • 啊,我明白了,您正在存储单词和单词的字谜。对吗?
  • 我正在存储单词,以及该单词按字母顺序排序的版本

标签: javascript node.js hashmap


【解决方案1】:

不需要按长度划分集合,散列算法应该能够自行处理。仅建议您按长度对单词进行排序。

在哈希表中为每个键存储多个值

你不能。但是,您可以为每个键存储一个字符串数组。

var words = ["team", "meat", "car"],
    map = {};
for (var i=0; i<words.length; i++) {
    var key = words[i].toLowercase().split('').sort().join('');
    if (key in map)
        map[key].push(words[i]);
    else
        map[key] = [ words[i] ];
}

【讨论】:

  • 为每个键存储字符串数组的 javascript 代码是什么样的?
  • 您自己尝试过什么吗?只需将一个数组作为每个值,并在它已经存在时推送它。
  • hash2 = {}; var count = 0; for (i in hash1){ for (j in hash1){ if (i!=j &amp;&amp; hash1[i] == hash1[j]) console.log("match!"); hash2[count].push(hash1[i]); } count++; }
  • 糟糕,抱歉,看起来很糟糕
  • @ZachLucas:你也可以put the code into your question。还请包括你是如何构建hash1
猜你喜欢
  • 2012-02-01
  • 2010-09-16
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多