在javascript中将集合映射为值

在javascript中将集合映射为值,javascript,Javascript,我试图在JavaScript中将一个集合映射到另一个值。我对JavaScript比较陌生,还没有找到一个例子。基本上,下面我有一个映射集映射到字符串的映射,我希望能够在映射上使用.get()获取字符串 let types = new Map(); const set1 = new Set([0,1]); const set2 = new Set([1,2]); types.set(set1, "a"); types.set(set2, "b"); 谢谢JavaScript的对象都是唯一的(这

我试图在JavaScript中将一个集合映射到另一个值。我对JavaScript比较陌生,还没有找到一个例子。基本上,下面我有一个映射集映射到字符串的映射,我希望能够在映射上使用.get()获取字符串

let types = new Map();
const set1 = new Set([0,1]);
const set2 = new Set([1,2]);

types.set(set1, "a");
types.set(set2, "b");

谢谢

JavaScript的对象都是唯一的(这一概念称为“标识”),因此,只有在具有相同实例的情况下才能
.get()


如果没有与键相同的实例,则无法有效地检索值。

JavaScript的对象都是唯一的(这个概念称为“标识”),因此,只有在具有相同实例的情况下才能
.get()


如果没有与键相同的实例,则无法有效地检索值。

转换为字符串并将其用作键:


const mapKey=JSON.stringify(Array.from(set1));

集合
转换为字符串,并将其用作键:


const mapKey=JSON.stringify(Array.from(set1));

实际上,就是这样。你的东西怎么了?事实上就是这样。你的东西怎么了?没有理由这么做。任何对象或基元都可以是映射中的键。有关为什么必须转换为字符串的原因,请参见另一个答案。但您不需要这样做,因为您对这两个集合都有引用。OP中的代码工作正常,因为您可以从映射中检索内容是
types.get(set1)
(因此是主持人的评论)。没有理由这样做。任何对象或基元都可以是映射中的键。有关为什么必须转换为字符串的原因,请参见另一个答案。但您不需要这样做,因为您对这两个集合都有引用。OP中的代码工作正常,因为您可以从映射中检索内容是
types.get(set1)
(因此版主给出了评论)。
types.get(set1); // "a", good
types.get(new Set([0,1])); // undefined, bad.