私は2つのオブジェクトを持っています。これらをキーとして連想配列に渡し、値を割り当てると、すべての値が間違って格納されます(最後の値を除く)。
誰かが私が間違っていることを教えてもらえますか?
var usrMrid = {name: "mrid"};
var usrXYZZ = {name: "xyzz"};
var comm = {};
comm[usrMrid] = "ONE";
comm[usrXYZZ] = "TWO";
console.log("usrMrid: " + comm[usrMrid]); // this gives TWO, when it should give ONE
console.log("usrXYZZ: " + comm[usrXYZZ]); // this works fine
[]
オブジェクトで構文を使用し、オブジェクトをプロパティ名として渡す場合、プロパティ名はstring
指定された式の表現になります[object Object]
。これはあなたの場合になります。したがって、異なるオブジェクトを使用すると、それらは名前を使用して同じプロパティを作成し[object Object]
、前のオブジェクトをオーバーライドします。
あなたは例でそれを見ることができます。ここでオブジェクトのプロパティを出力すると、名前が付い[object Object]
たプロパティが1つしかないことがわかります。
var usrMrid = {name: "mrid"};
var usrXYZZ = {name: "xyzz"};
var comm = {};
comm[usrMrid] = "ONE";
comm[usrXYZZ] = "TWO";
console.log(comm);
Map
その場合に使用できます
var usrMrid = {name: "mrid"};
var usrXYZZ = {name: "xyzz"};
var comm = new Map([
[usrMrid, "ONE"],
[usrXYZZ, "TWO"]
]);
console.log(comm.get(usrMrid));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加