Cytoscape.js을 사용하고 있습니다. 일부 노드가 가장자리에 연결되어 있습니다.Cytoscape.js의 노드 사이에 고유 한 쌍을 찾는 중
두 노드 사이의 각 연결을 반복하고 싶습니다. 문제는 두 노드 사이에 여러 개의 가장자리가있는 경우가 있으므로 cy.edges().forEach()
이라고 말할 수는 없습니다. 필요한 것보다 더 많은 가장자리를 반복 할 수 있기 때문입니다. 내가 할 수있는 무엇
뭔가 같은
const alreadyVisited = [];
cy.edges().forEach(edge => {
const key1 = edge.source() + '-' + edge.target();
const key2 = edge.target() + '-' + edge.source();
if (alreadyVisited.indexOf(key1) === -1 && alreadyVisited.indexOf(key2)) {
// ...
alreadyVisited.push(key1);
alreadyVisited.push(key2);
}
})
을 말을하는 것입니다하지만 약간 바보 같다. Cytoscape에는 일부 기능이 있습니다 edges.parallelEdges()
, nodes.connectedEdges()
, eles.neighborhood()
등 일부 기능을 사용하여 내 문제를 해결할 수 없습니까?
key1
및 key2
을 모두 갖는 이유는 가장자리의 방향이 중요하지 않음을 확인하는 방법을 알지 못했기 때문입니다.
편집
내가 대안도
cy.nodes().forEach(node1 => {
cy.nodes().forEach(node2 => {
if (node1 !== node2) {
// now I have each pair
}
});
});
같은 뭔가를 할 수 있지만, 또한 그들 중 많은 사람들이 그들 사이의 모서리가없는 것이기 때문에 바보 같은 방법 아닌가요? 그리고 두 노드 A와 B가있는 경우이 접근 방식은 두 개의 관계 (A -> B와 B -> A 모두)를 제공합니다.