Javascript 使用ECMA6设置为对象键

Javascript 使用ECMA6设置为对象键,javascript,set,Javascript,Set,有没有办法将设置用作对象键 设x={} 常数a=新集合([3,5]) x[a]=1 console.log(x)/>{[objectset]:1} 常数b=新集合([1,4]) x[b]=2 console.log(x)/>{[objectset]:2} 即使集不相等,关键点也会被覆盖 谢谢 您的意思是ES6中的map如下所示: x=newmap() a=新设置([3,5]) x、 组(a,1) 控制台日志(x)您的意思是ES6中的映射像这样: x=newmap() a=新设置([3,5]

有没有办法将
设置
用作对象键

设x={}
常数a=新集合([3,5])
x[a]=1
console.log(x)/>{[objectset]:1}
常数b=新集合([1,4])
x[b]=2
console.log(x)/>{[objectset]:2}
即使集不相等,关键点也会被覆盖


谢谢

您的意思是
ES6
中的
map
如下所示:

x=newmap()
a=新设置([3,5])
x、 组(a,1)

控制台日志(x)
您的意思是
ES6
中的
映射像这样:

x=newmap()
a=新设置([3,5])
x、 组(a,1)

控制台日志(x)否这是不可能的,因为对象键必须是字符串或符号。如果要使用集合作为键,可以尝试使用。贴图与对象类似,只是可以将其他对象用作贴图的关键点

要记住的一点是,不能像使用对象那样使用贴图

这直接来自Mozilla文档。 以下不是对地图的有效使用

让错误映射=新映射()
错误映射['bla']='blaa'
错误映射['bla2']='blaaa2'
log(错误映射)//Map{bla:'blaa',bla2:'blaaa2'}
但这种设置属性的方式不会与地图数据结构交互。它使用通用对象的功能。“bla”的值未存储在地图中以供查询。对数据的其他操作失败:

正确使用地图如下所示:

let map=new map()
//设定值
map.set(键、值)
//获取价值
map.get(键)
请记住,如果使用像集合这样的对象作为键,则集合的引用才是重要的


如果分别实例化两个集合,即使它们具有相同的内容,它们也将具有不同的引用,并被视为不同的键。

否这是不可能的,因为对象键必须是字符串或符号。如果要使用集合作为键,可以尝试使用。贴图与对象类似,只是可以将其他对象用作贴图的关键点

要记住的一点是,不能像使用对象那样使用贴图

这直接来自Mozilla文档。 以下不是对地图的有效使用

让错误映射=新映射()
错误映射['bla']='blaa'
错误映射['bla2']='blaaa2'
log(错误映射)//Map{bla:'blaa',bla2:'blaaa2'}
但这种设置属性的方式不会与地图数据结构交互。它使用通用对象的功能。“bla”的值未存储在地图中以供查询。对数据的其他操作失败:

正确使用地图如下所示:

let map=new map()
//设定值
map.set(键、值)
//获取价值
map.get(键)
请记住,如果使用像集合这样的对象作为键,则集合的引用才是重要的


如果分别实例化两个集合,即使它们具有相同的内容,它们也将具有不同的引用,并被视为不同的键。

否,对象键只是字符串或符号。两者都不是的任何内容都将转换为字符串。您可以使用保留键类型的映射,但是即使两个集合包含相同的值,它们也会被视为不同。不,对象键只是字符串或符号。两者都不是的任何内容都将转换为字符串。您可以使用保留键类型的映射,但是两个集被认为是不同的,即使它们包含相同的值。是的,谢谢,但是,有没有办法把两个具有相同成员的集合视为同一个键?@Moses首先想到的是将集合字符串化,并使用字符串作为键,但你需要确保顺序一致。是的,谢谢,但是有没有办法将两个具有相同成员的集合视为同一个键?@Moses首先想到的是将集合字符串化并使用字符串作为键,但您需要确保顺序一致。