Cytoscape.js中如何通过node.outgoers()仅获取目标节点?
问题解决方法
核心修复:过滤仅获取节点
Cytoscape.js的incomers()和outgoers()方法默认会返回关联的边和节点,你只需要在方法中传入'node'选择器,就能仅获取目标节点集合:
nodes.forEach((n)=>{ var array = []; array.push(1.0); array.push(1.0); array.push(n.incomers('node')); // 仅获取父节点 array.push(n.outgoers('node')); // 仅获取子节点 map.set(n, array); })
错误原因说明
你遇到的Uncaught TypeError: Cannot read properties of undefined (reading '0'),是因为之前的outgoers()返回了边对象。当updateHub遍历array[3]时,其中的边对象作为键去Map中查找,而你的Map仅以节点为键,所以map[c]会返回undefined,访问[0]自然报错。
验证updateHub逻辑
修正节点集合后,updateHub函数的逻辑就能正常运行,因为遍历的每个c都是节点对象,Map中存在对应的条目:
function updateHub(n, map, array){ array[3].forEach((c) =>{ array[1] += map[c][0]; }); }
内容的提问来源于stack exchange,提问作者Palucca
相关产品推荐
相关产品推荐

