私はマップとしてオブジェクトをキーとして保存したいので、マッププレーンオブジェクトと同様のJavaScriptマップにアクセス
を使用しています。
私の質問は - プレーンオブジェクトにアクセスするのと同じ方法でマップにアクセスできますか?例えば
:
let m = new Map();
let obj = {foo:'bar'};
m[obj] = 'baz';
console.log(m[obj]);
これがあると、正しく動作するようになっている、または私は地図の取得/設定メソッドを使用する必要がありますか?
get/setを使用する必要がある場合は、慎重に多くのコードをリファクタリングする必要があるためです。ここで
をリファクタリングする必要があるかもしれないコードの実際の生活の例です:
//(ブローカー後
function addWsLockKey(broker, ws, key) {
let v;
if (!(v = broker.wsLock[ws])) {
v = broker.wsLock[ws] = [];
}
if (v.indexOf(key) < 0) {
v.push(key);
}
}
//(broker.wsLockプレーン目的であった)の前に。 wsLockは
function addWsLockKey(broker, ws, key) {
let v;
if (!(v = broker.wsLock.get(ws))) {
v = [];
broker.wsLock.set(ws, v);
}
if (v.indexOf(key) < 0) {
v.push(key);
}
}
)Mapインスタンスであるセット()Cと同じライン上にVを設定するためのいくつかの方法がありますすべて?
マップは他のJSオブジェクトとまったく同じですので、実際のマップを追加するのではなく、プロパティ["object Object]"を追加するだけです。エントリ。つまり、あなたはset/getを使う必要があります –
私はコンソールであなたの例を試しました - うまくいくようです。 – Zac
@ Zacのように、実際には実際のオブジェクトが表すプロパティには値が割り当てられず、Jaromanda Xのように '[object Object]'というプロパティに設定されます。 –