You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
var degree = function degree(graphData) {
|
|
var degrees = {};
|
|
var _a = graphData.nodes,
|
|
nodes = _a === void 0 ? [] : _a,
|
|
_b = graphData.edges,
|
|
edges = _b === void 0 ? [] : _b;
|
|
nodes.forEach(function (node) {
|
|
degrees[node.id] = {
|
|
degree: 0,
|
|
inDegree: 0,
|
|
outDegree: 0
|
|
};
|
|
});
|
|
edges.forEach(function (edge) {
|
|
degrees[edge.source].degree++;
|
|
degrees[edge.source].outDegree++;
|
|
degrees[edge.target].degree++;
|
|
degrees[edge.target].inDegree++;
|
|
});
|
|
return degrees;
|
|
};
|
|
export default degree;
|
|
/**
|
|
* 获取指定节点的入度
|
|
* @param graphData 图数据
|
|
* @param nodeId 节点ID
|
|
*/
|
|
export var getInDegree = function getInDegree(graphData, nodeId) {
|
|
var nodeDegree = degree(graphData);
|
|
if (nodeDegree[nodeId]) {
|
|
return degree(graphData)[nodeId].inDegree;
|
|
}
|
|
return 0;
|
|
};
|
|
/**
|
|
* 获取指定节点的出度
|
|
* @param graphData 图数据
|
|
* @param nodeId 节点ID
|
|
*/
|
|
export var getOutDegree = function getOutDegree(graphData, nodeId) {
|
|
var nodeDegree = degree(graphData);
|
|
if (nodeDegree[nodeId]) {
|
|
return degree(graphData)[nodeId].outDegree;
|
|
}
|
|
return 0;
|
|
};
|