2017-04-05 8 views
0

オブジェクトをキーとしてルックアップテーブルを作成します。しかし、テーブルの値を取得するために同じ値を持つキーを作成することはできません。同じ値のオブジェクトを持つマップから値を取り出すことができません

const makeKey = (a, b) => (
 
    {a, 
 
    b,} 
 
); 
 

 
const lookup = new Map(); 
 

 
lookup.set(makeKey(1, 2), 'YES'); 
 
lookup.set(makeKey(3, 7), 'NO'); 
 
console.log(lookup.keys()); 
 

 
const k = makeKey(1, 2) 
 

 
console.log(k); 
 
console.log(lookup.get(k)); // want to get YES, get undefined instead

地図ヒットを見つけるために、オブジェクトIDを使用していますように思えます。

オブジェクトの値をキーとして使用するにはどうすればよいですか?

+0

ですマップであり、これらのマップのそれぞれは、キーとして「b」値を有し、値として「YES」および「NO」値を有する。あなたが言ったように、マップはオブジェクトのアイデンティティに基づいているので、それはあなたの目標と一緒に仕事をすることです。 – loganfsmyth

答えて

0

私が終わるキーが生成される方法に変更:

const makeKey = (a, b) => { 
    const k = {a, b}; 
    return `${Object.values(k)}` 
}; 

をキーは、今あなたがそれぞれの値のキーとしてA` `とトップレベルの地図を作ることができ、文字列

+0

これは '[a、b] .join("、 ")FYIと同じです。私はおそらくそれが読むのが簡単なので、そのルートを行くだろう。 – loganfsmyth

関連する問題