Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 722x 722x 19x 19x 18x 18x 2x 16x 552x 552x 552x 3x 3x 3x 552x 382x 382x 382x 382x 4x 4x 4x 382x 32x 382x 542x 13x | import { GraphEnum } from './Graph/enum';
import { DefaultEdgeType } from './Graph';
/**
* @description add one to key's value in map
* @description.zh-CN 在 map 中 key 的值加 1
* @param map
* @param key
*/
export function incrementOrInitEntry(map: Map<any, any>, key: any) {
const val = map.get(key) || 0;
map.set(key, val + 1);
}
/**
* @description minus one from key's value in map, is value is 0, delete the key
* @description.zh-CN 在 map 中 key 的值减 1,如果值为 0,则删除 key
*/
export function decrementOrRemoveEntry(map: Map<any, number>, key: any) {
let val = map.get(key);
if (val !== undefined) {
val = val - 1;
if (val > 0) {
map.set(key, val);
} else {
map.delete(key);
}
}
}
/**
* @description convert edge to string id
* @description.zh-CN 转换边为字符串 id
*/
export function edgeArgsToId<NodeType>(
isDirected: boolean,
v_: NodeType,
w_: NodeType,
name?: any,
) {
let v = String(v_);
let w = String(w_);
if (!isDirected && v > w) {
let tmp = v;
v = w;
w = tmp;
}
return (
v +
GraphEnum.EDGE_KEY_DELIM +
w +
GraphEnum.EDGE_KEY_DELIM +
(name === undefined ? GraphEnum.DEFAULT_EDGE_NAME : name)
);
}
/**
* @description convert edge arguments to edge object
* @description.zh-CN 转换边参数为边对象
*/
export function edgeArgsToObj<NodeType>(
isDirected: boolean,
v: NodeType,
w: NodeType,
name?: string,
) {
const strV = String(v);
const strW = String(w);
const edgeObj: DefaultEdgeType<NodeType, any> = { v: v, w: w };
if (!isDirected && strV > strW) {
let tmp = edgeObj.v;
edgeObj.v = edgeObj.w;
edgeObj.w = tmp;
}
if (name !== undefined) {
edgeObj.name = name;
}
return edgeObj;
}
/**
* @description convert edge object to string id
* @description.zh-CN 转换边对象为字符串 id
*/
export function edgeObjToId(isDirected: boolean, edgeObj: { v: any; w: any; name?: any }) {
return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);
}
export function isFunction(obj: any) {
return typeof obj === 'function';
}
|