У меня есть массив объектов, которые связаны уникальным идентификатором.Итерация через связанные объекты, как избежать дубликатов
Что-то вроде этого:
var nodes = [];
nodes[0] = {'id':1,'linksTo':[2,3],'x':1,'y':1};
nodes[1] = {'id':2,'linksTo':[1],'x':2,'y':1};
nodes[2] = {'id':3,'linksTo':[1],'x':2,'y':1};
Поэтому предположим, я должен был рисовать линии между каждой точкой в брезентовый элемент, который они ссылаются. В приведенном выше случае я бы сделал одну и ту же строку дважды: одну от id 1 до id 2, а затем снова от id 2 до id 1. Это неэффективно, и в игровом цикле это повредит частоту кадров с течением времени.
Мой текущий метод подобен этой логике:
Object.keys(nodes).forEach(function(nodeIndex) {
nodes[nodeIndex].linksTo.forEach(function(connectedNode) {
//line move to x,y
//line to x2, y2
});
});
Что бы наиболее эффективный способ сделать это, чтобы не повредить частоту кадров и не рисовать точно так же дважды? Помня, что он должен быть эффективен для обеспечения более высокой частоты кадров.
Не работает ли это только в том случае, если объекты находятся в порядке от наименьшего до наивысшего идентификатора? Это или мой мозг не работает должным образом. – Sir
Предположим, что Node1 Node1, пропустите его и продолжайте движение, потому что позже вы найдете Node1 -> Node2. –
Ой, хорошо, имеет смысл! Черт, я не знаю, почему я об этом не думал! Спасибо. – Sir