mri*_*rid 1 javascript arrays associative-array
我有两个对象.当我将这些作为键传递给关联数组并赋值时,所有值都存储错误(最后一个除外).
谁能告诉我我做错了什么?
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 fineRun Code Online (Sandbox Code Playgroud)
当您使用[]带有对象的语法并将对象作为属性名称传递时,属性名称将成为string给定表达式的表示形式,这将在您的情况下[object Object].因此,当您使用不同的对象时,它们会使用名称创建相同的属性[object Object]并覆盖以前的属性.
您可以在示例中看到它.在这里,我打印对象的属性,你可以看到只有一个属性名称[object Object].
var usrMrid = {name: "mrid"};
var usrXYZZ = {name: "xyzz"};
var comm = {};
comm[usrMrid] = "ONE";
comm[usrXYZZ] = "TWO";
console.log(comm);Run Code Online (Sandbox Code Playgroud)
你可以Map用于那种情况
var usrMrid = {name: "mrid"};
var usrXYZZ = {name: "xyzz"};
var comm = new Map([
[usrMrid, "ONE"],
[usrXYZZ, "TWO"]
]);
console.log(comm.get(usrMrid));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |