おそらくJSONをシリアル化フォーマットとして使用しているsocket.io(または何らかの転送メカニズム)です。残念ながら、マップやセットなどのES2015データ型はJSONエンコードできません。
let m = new Map([['one', 1], ['ten', 10], ['hundred', 100]]);
console.log(JSON.stringify(m));
// "{}"
それは非常に洗練さだが、私は、アレイ・オブ・アレイをサーバー側に変換し、それを送信し、クライアント上のマップを作成し直す:あなたのケースでそう
let transitString = JSON.stringify(Array.from(m));
console.log(transitString)
// "[["one",1],["ten",10],["hundred",100]]"
var newMap = new Map(JSON.parse(transitString));
console.log(newMap)
// Map {"one" => 1, "ten" => 10, "hundred" => 100}
、Iサーバー上でio.emit('user_change', Array.from(users));
を実行し、クライアントでfor
ループを変更してマップ:for (let user of (new Map(users)))
を使用します。