2016-09-06 2 views
0

У меня есть две коллекции Node и Edge.Распечатка номера картографирования документов, а не идентификаторов

У меня есть два поля source и target, хранящие идентификаторы узлов и с которыми они связаны.

идентификаторы узлов (как хранится я node.id, edge.source и edge.target) не очень удобный для чтения, так что я хочу сделать, это напечатать набор узлов и множество ребер, но вместо того, чтобы печатать их идентификаторы, я хотите напечатать индекс, начиная с 1.

Так что, если у меня есть 3 узлов, мой результат должен быть

Набор узлов = {n1, n2, n3}

и если я имеют два ребра w здесь первый связан между n1 и n2, а вторая связана между n2 и n3, Вы хотите вывести

множество ребер = {e1 = (n1, n2), е2 = (n2, n3)}

Если бы я не забочусь об изменении идентификаторов к некоторым более читаемым индексам, я мог бы напечатать края с

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(', ') + '}'); 

Я предполагаю, что мне нужно создать хэш-отображение узлов перед печатью ребер, поэтому я уверен, что исходный идентификатор и целевой идентификатор каждого края будут переведены в правильный номер/индекс узла.

Редактировать

Узлы и ребра очень просты

const nodeSchema = new Schema({}); 
const edgeSchema = new Schema({ source: Schema.Types.ObjectId, target: Schema.Types.ObjectId}); 

Таким образом, они не занимать какую-либо другую информацию, чем автоматически созданный _id и края хранить ссылки на узлы, используя узлы _id стоимость.

+0

Вы можете включать в пример 'Node' и' Edges' на вопрос? – guest271314

+0

_ «Надеюсь, что этого достаточно». Можете ли вы предоставить адекватный текст «Узел» и «Кромки» в вопросе для получения ожидаемого результата '{e1 = (n1, n2), e2 = (n2, n3)}'? И поделиться тем, что вы пытались решить проблему? – guest271314

ответ

0

Я предполагаю, что это работает

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] + ')'); 
Смежные вопросы