javascript - 类方法中的 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
}
};
解决方案
我认为 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);
推荐阅读
- javascript - Reactjs无法使按钮起作用
- python - 将列表中的 None 值更改为列表中的先前元素
- azure - Terraform 有条件地为子网创建服务端点
- ruby - 400 纯 HTTP 请求仅从 ruy 发送到 HTTPS 端口
- django - 使用 Docker 容器部署时,Celery 未连接到 AWS Elastic Beanstalk 上的 RabbitMQ
- java - 获取 Alfresco Java Webscript 控制器的 pdf
- c - 将 unsigned char 移动超过 8 位
- reactjs - Material-UI AutoComplete freeSolo in Form
- c# - 我正在做一个项目,但是当我尝试播放它时出现错误 CS0031 常量值 true 无法转换为浮点数
- c# - 在框架中使用的标准中依赖注入的正确模式是什么?