Javascript 如何创建一个';当每个条目相等时,集合中的值相等吗?

Javascript 如何创建一个';当每个条目相等时,集合中的值相等吗?,javascript,hashset,Javascript,Hashset,如何使follow语句返回true class Pair { constructor(x, y) { this.x = x this.y = y } // TODO ? } const set = new Set() set.add(new Pair(1, 2)) (我们可以覆盖Java中Pair类的equals和hashCode)引用只有在指向内存中相同的值时才会相等-new将(默认情况下)创建一个新对象,该对象不能==为单独的对象。我

如何使follow语句返回true

class Pair {
    constructor(x, y) {
        this.x = x
        this.y = y
    }
    // TODO ?
}
const set = new Set()
set.add(new Pair(1, 2))

(我们可以覆盖Java中
Pair
类的
equals
hashCode

引用只有在指向内存中相同的值时才会相等-
new
将(默认情况下)创建一个新对象,该对象不能
==
为单独的对象。我假设一个选项是返回一个已有的
x,y
对实例,如果它是在前面构造的:

const pairs={};
函数getMakePair(x,y){
常数str=x+','+y;
if(成对[str]){
返回对[str];
}
常数对=新对(x,y);
配对[str]=配对;
返回对;
}
类对{
构造函数(x,y){
这个。x=x
这个。y=y
}
}
常量集=新集()
set.add(getMakePair(1,2))

console.log(set.has(getMakePair(1,2))
引用只有在指向内存中相同的值时才会相等-
new
将(默认情况下)创建一个新对象,该对象不能
==
为单独的对象。我假设一个选项是返回一个已有的
x,y
对实例,如果它是在前面构造的:

const pairs={};
函数getMakePair(x,y){
常数str=x+','+y;
if(成对[str]){
返回对[str];
}
常数对=新对(x,y);
配对[str]=配对;
返回对;
}
类对{
构造函数(x,y){
这个。x=x
这个。y=y
}
}
常量集=新集()
set.add(getMakePair(1,2))
console.log(set.has(getMakePair(1,2)))
覆盖相等性检查目前不可行:

相反,您可以扩展
Set
类来创建自己的
PairSet

类对{
构造函数(x,y){
这个
这个
}
toString(){
返回[
这个,
这个,
].join(“,”)
}
}
类PairSet扩展集{
添加(对){
返回super.add(pair.toString())
}
有(对){
返回super.has(pair.toString())
}
删除(对){
返回super.delete(pair.toString())
}
}
(功能测试){
常量集=新PairSet()
集合。添加(新的一对(1,2))
console.log(set.has(新对(1,2))//true
console.log(set.has(新对(2,1))//false
})()
覆盖相等性检查目前不可行:

相反,您可以扩展
Set
类来创建自己的
PairSet

类对{
构造函数(x,y){
这个
这个
}
toString(){
返回[
这个,
这个,
].join(“,”)
}
}
类PairSet扩展集{
添加(对){
返回super.add(pair.toString())
}
有(对){
返回super.has(pair.toString())
}
删除(对){
返回super.delete(pair.toString())
}
}
(功能测试){
常量集=新PairSet()
集合。添加(新的一对(1,2))
console.log(set.has(新对(1,2))//true
console.log(set.has(新对(2,1))//false

})()
JavaScript不支持此操作。JavaScript不支持此操作。
set.has(new Pair(1, 2)) // -> false