2016-04-05 5 views
0

マップのキー値のペアを格納するためにhashmapを使用しています。もし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]が必要です。 どのように私はこれに近づくつもりです。 値変数の値が繰り返される場合、同じキーに対応する値のカウントも増やしたいと考えています。

答えて

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

+0

私の質問はキーが同じです。 – user2903536

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)) 
} 
+0

ありがとうございます。 もう一度誰かがmap.set( "amit"、[1,4,5]); は、1回に2回入力するように指示する方法です。 – user2903536

+0

問題ありません。私はあなたの質問を理解するか分からない。私の前提は '[1,4,5]'は '[1,1,4,5]'でしょうか? – Nindaff

関連する問題