首页 > 解决方案 > 类方法中的 Javascript 类实例

问题描述

对于以下问题,我真的有点不知所措。

我应该创建一个包含一组节点和边的图表。方法“add”应该检查边缘是重复还是反向重复。如果不是这种情况,则应将此新边添加到相应的集合中。因此,我需要在方法中创建 Edge 类的实例并执行 for 循环以检查条件是否满足。

我真的被困在这里,我希望你们中的一些人能给我一个提示:)

在此先感谢 BR

class Graph {
  constructor() {
    this.nodes = new Set();
    this.edges = new Set();
}
add(m,n){
   const e = new Edge (m,n);

  }

};

class Edge {
  constructor(startpoint,endpoint) {
    this.startpoint = startpoint;
    this.endpoint = endpoint;
}
};

class Node {
  constructor(nodeName) {
    this.nodeName = nodeName
}
};

标签: javascriptoopinstance

解决方案


我认为 aSet并不完全适合这个。如果您Edge在每次添加时构造对象并将它们添加到,Set那么这些最终将被比较,例如:

new Edge(1, 1) === new Edge(1, 1);

正如您可能知道的那样,这将始终是错误的,因为这是两个不同的对象。但是,您可以使用 aMap并使用唯一键来识别边缘。例如,它的构造函数参数。这样,您可以说new Edge(1,1)key 是"1,1". 如果密钥不存在:

// ...
  this.edges = new Map();
// ...

let key = `${m},${n}`;
if(!this.edges.has(key)){

}

然后你添加它:

this.edges.set(key, e);

推荐阅读