Javascript中的图形实现

Javascript中的图形实现,javascript,graph,Javascript,Graph,这是我的图形实现 类图{ 构造函数(定向=false){ 此参数为0; this.directed=directed; this.dict={} } 附加值(v1、v2、重量){ 设p,q; if(本条中的v1){ p=这个。dict[v1]; }否则{ p=新节点(v1); dict[v1]=p; 这个.numVertices++; } if(本条中的v2){ q=这个.dict[v2]; }否则{ q=新节点(v2); dict[v2]=q; 这个.numVertices++; } p、

这是我的图形实现

类图{
构造函数(定向=false){
此参数为0;
this.directed=directed;
this.dict={}
}
附加值(v1、v2、重量){
设p,q;
if(本条中的v1){
p=这个。dict[v1];
}否则{
p=新节点(v1);
dict[v1]=p;
这个.numVertices++;
}
if(本条中的v2){
q=这个.dict[v2];
}否则{
q=新节点(v2);
dict[v2]=q;
这个.numVertices++;
}
p、 附录(q);
}
stringify(){
for(Object.entries(this.dict)的常量[键,值]){
log(`${key}:${value.adjacencySet}`);
}
}
}
//这是节点类。
类节点{
建造师(数据){
这个数据=数据;
this.adjacencySet=新集合();
}
附加(节点){
this.adjacencySet.add(节点)
}
getAdjacentVertices(){
返回此.adjacencySet;
}
}
//这是我正在使用的呼叫客户端。
图形=新图形();
图.附录(12,13);
图.附录(12,14);
图.附录(13,15);
图.附录(14,6);

graph.stringify()您可以将集合转换为数组,然后将节点映射到其值

[...value.adjacencySet].map(x => x.data)
类图{
构造函数(定向=false){
此参数为0;
this.directed=directed;
this.dict={}
}
附加值(v1、v2、重量){
设p,q;
if(本条中的v1){
p=这个。dict[v1];
}否则{
p=新节点(v1);
dict[v1]=p;
这个.numVertices++;
}
if(本条中的v2){
q=这个.dict[v2];
}否则{
q=新节点(v2);
dict[v2]=q;
这个.numVertices++;
}
p、 附录(q);
}
stringify(){
for(Object.entries(this.dict)的常量[键,值]){
log(`${key}:${[…value.adjacencySet].map(x=>x.data)}`);
}
}
}
//这是节点类。
类节点{
建造师(数据){
这个数据=数据;
this.adjacencySet=新集合();
}
附加(节点){
this.adjacencySet.add(节点)
}
getAdjacentVertices(){
返回此.adjacencySet;
}
}
//这是我正在使用的呼叫客户端。
图形=新图形();
图.附录(12,13);
图.附录(12,14);
图.附录(13,15);
图.附录(14,6);

graph.stringify()你的
addEdge
方法的右括号在哪里?我添加了它,因为您的代码已经工作了。一定是转录错误。引用lookout优于spread语法+
map
:使用
Array.from(value.adjacencySet,x=>x.data)