TypeScript如何定义键为字符串、值为字符串数组的Graph对象类型
实现方法
类型定义
你的Graph结构是典型的字符串键、字符串数组值的映射结构,直接用TypeScript内置工具类型定义即可:
type Graph = Record<string, string[]>;
数组转换逻辑
定义完类型后,可以写一个工具函数把输入的roads数组转换成符合要求的Graph结构,逻辑如下:
- 初始化空的Graph实例作为返回结果
- 遍历每一条路径字符串,用
'-'拆分出起点和终点 - 给对应起点的连通数组追加终点即可
完整可运行代码:
type Graph = Record<string, string[]>; function buildGraph(roads: string[]): Graph { const graph: Graph = {}; for (const road of roads) { // 拆分起点终点 const [from, to] = road.split('-'); // 不存在该起点的条目时先初始化空数组 if (!(from in graph)) { graph[from] = []; } graph[from].push(to); // 👉 如果道路是双向可通行的(大部分场景下道路都是无向的),放开下面注释即可同时添加反向连通关系 // if (!(to in graph)) graph[to] = []; // graph[to].push(from); } return graph; } // 调用示例 const roads = [ "Alice's House-Bob's House", "Alice's House-Cabin", "Alice's House-Post Office", ]; const myGraph = buildGraph(roads); // 运行后myGraph的结构和你给出的预期示例完全一致
注意:如果你的地名本身包含
'-'字符,这个简单的拆分逻辑会出错,这种场景请更换不会和地名冲突的分隔符(比如'|'、'->'等)。
内容的提问来源于stack exchange,提问作者Kronosaurus
相关产品推荐
相关产品推荐

