打印号码映射到文档而不是ID
问题描述:
我有两个集合Node
和Edge
。打印号码映射到文档而不是ID
在Edge
我有两个字段source
和target
存储它们所链接的节点的ID。
节点(包括存储的I node.id
,edge.source
和edge.target
)不是很有可读性,所以我想要做的就是打印组节点和边的集合,但而不是打印它们的ID,我的id要打印的指数从1
开始所以,如果我有3个节点,我的结果应该是
节点集合= {N1,N2,N3}
,如果我有两个边w这里首先是n1和n2和第二之间连接的是n2和n3之间的联系,我要输出
组边=的{E1 =(N1,N2),E2 =(N2,N3)}
如果我不关心改变IDS一些更可读的指标,我可以
edges = edges.map((edge, index) => 'e' + (index + 1) + ' = (' + edge.source + ', ' + edge.target + ')');
console.log('Set of edges = {' + edges.join(', ') + '}');
打印的边缘,并与
nodes = nodes.map((node, index) => 'n' + (index + 1));
console.log('Set of nodes = {' + nodes.join(', ') + '}');
节点3210
我的猜测是我必须在打印边缘之前创建节点的哈希映射,所以我确信每个边缘的source-id和target-id将被转换为正确的节点编号/索引。
编辑
节点和边缘是非常简单的
const nodeSchema = new Schema({});
const edgeSchema = new Schema({ source: Schema.Types.ObjectId, target: Schema.Types.ObjectId});
所以他们并不拥有比自动创建_id
和边缘坚持使用节点引用的任何其他信息节点的_id
值。
答
我想这个作品
const hashmap = {};
nodes.map((node, idx) => {
hashmap[node.id] = 'n' + (idx + 1);
});
nodes = Object.keys(hashmap).map(key => hashmap[key]);
edges = edges.map((edge, idx) => 'e' + (idx + 1) + '=(' + hashmap[edge.source] + ', ' + hashmap[edge.target] + ')');
您可以包括例如'Node'和'Edges'在问题的? – guest271314
_“希望它是足够的”_你可以在问题中提供足够的'Node'和'Edges'文本来产生预期的结果{e1 =(n1,n2),e2 =(n2,n3)}?并分享你试图解决的问题? – guest271314