javascript - JavaScript 是否允许为对象字段设置键?

标签 javascript hashmap

当我运行以下代码时:

fake_key = new Set([{v: 1, w: 2}])
fake_memo = {};
fake_memo[fake_key] = 2;

fake_key = new Set([{v: 5, w: 5}])
fake_memo[fake_key] = 5;

然后打印或记录fake_memo,我希望看到:

{ '[object Set]': 2, '[object Set]': 5 }

相反,我得到:

{ '[object Set]': 5 }

就好像我插入对象映射中的第一个对象被第二个对象破坏了。

为什么会出现这种情况?如何恢复我想要的行为(两个键都插入到 map 中)?

最佳答案

普通对象的属性键始终是字符串。您的集合正在转换为字符串,它始终给出字符串“[object Set]”

您可以使用 Map 实例而不是普通对象,因为 Map 键可以是任何类型的值。为此,请制作 map :

fake_memo = new Map();

然后

fake_memo.set(fake_key, 2);

等等。使用

var value = fake_memo.get(some_key);

检索值。

您可以在 Map 实例上使用普通的 [ ] 操作,但这仍会将 Map 视为普通对象。

关于javascript - JavaScript 是否允许为对象字段设置键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51846362/

相关文章:

c++ - 优化 map : forwarding the key 上的初始化

javascript - 在 django 中向 TinyMCE 添加外部插件

javascript - 计算对象值的出现次数

java - hashmap在多线程环境下可以有重复的键吗

c++ - it.first 和 it->first 有什么区别?

java - 打印存储在散列的散列中的元素

javascript - AngularJs 工厂和 Controller 控制流程

javascript - jQuery 选择器,效率

javascript - jquery密码验证

java - 如何避免重复代码初始化 hashmap 的 hashmap?