如何实现hashmap

时间:2016-04-05 20:34:12

标签: javascript node.js

我使用hashmap来存储map的键值对。如果他们是使用NOdejs做同样的替代方法,请告诉我。

var HashMap=require('hashmap');
var map=new HashMap();
map.set("amit",[1,2]);
map.set("amit",[3,4]);
console.log(map.get("amit"));

在控制台上打印[3,4],我想要[1,2,3,4]。 我怎么会接近这个。 如果值变量中的值重复,那么我还想增加对应于相同键的值的计数。

2 个答案:

答案 0 :(得分:1)

每次在该密钥上调用amit时,您都会覆盖set密钥值。除非hashmap中有一些特定的API支持,否则最好的选择是在每个set调用中连接上一个值。

考虑:

var HashMap = require("hashmap")

var map = new HashMap()
map.set('amit', [1,2])
// Concat previous value with [3, 4]
map.set('amit', map.get('amit').concat([3,4]))

console.log(map.get('amit'))
// [1, 2, 3, 4]

你也可以为此做一个抽象。以下是一个简单的示例,您很可能希望在实际用例中进一步扩展它。

// concatSet('foo', [1, 2])
// concatSet('foo', [3, 4])
// console.log(map.get('foo')) => [1, 2, 3, 4]
function concatSet(key, value) {
   // empty array if not exists
   var prevValue = map.get(key) || []
   return map.set(key, prevValue.concat(value))
}

答案 1 :(得分:0)

你必须循环地图。

map.set(1, "test 1");
map.set(2, "test 2");
map.set(3, "test 3");

map.forEach(function(value, key) {
    console.log(key + " : " + value);
});

https://www.npmjs.com/package/hashmap