2016-08-24 7 views
0

Mapオブジェクトsetメソッドは、新しいキー/ペアを追加したり、既存のキー/ペアを更新したりするためのメソッドです。 See docsJavascriptマップに重複キーがあります

私はそれは私がデータベースの結果を移入しようとすると、私の地図には、重複キーになってしまったことがある方法を見つけ出すのに苦労してきた:

let users = new Map(); 

function loadUserByName(name) { 
    db.loadUser({ name }, (err, user) => { 
     users.set(user.id, user);   
    }); 
} 

loadUser('george'); 
users.forEach((item) => { console.log(item.key); }); 
// Output: 
// 57bbfcb47ff30b00db69ae87 

loadUser('george'); 
users.forEach((item) => { console.log(item.key); }); 
// Output: 
// 57bbfcb47ff30b00db69ae87 
// 57bbfcb47ff30b00db69ae87 

答えて

0

A地図をキーとしてオブジェクトを持つことができます。そして、同じ文字列として出力される2つのオブジェクトが同じオブジェクトであるとは限りません。上記のコードは、すなわち文字列としてuser.idをキャストすることによって固定することができます。

function loadUserByName(name) { 
    db.loadUser({ name }, (err, user) => { 
     users.set(String(user.id), user);   
    }); 
} 
+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Mapによると - キー平等をマップは「同じ値」のアルゴリズムに基づいています:キーは、===演算子のセマンティクスに従って等しいとみなされます。 –

関連する問題