迭代链接对象,如何避免重复

时间:2015-01-23 06:56:35

标签: javascript

我有一个由唯一ID链接在一起的对象数组。

这样的事情:

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};

所以假设我要在它们链接到的canvas元素中的每个点之间绘制线条。在上面的例子中,我会绘制两次相同的行,一个从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
  });
});

这样做最有效的方法是不伤害帧速率并避免两次绘制相同的方式?记住,它需要有效地允许更高的帧速率继续。

1 个答案:

答案 0 :(得分:3)

只有当第一个节点的id小于第二个节点的id时才能绘制该行。