循环访问链接对象,如何避免重复
Iterating through linked objects, how to avoid duplicates
我有一个对象数组,这些对象通过唯一 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};
因此,假设我要在它们链接到的画布元素中的每个点之间绘制线条。在上述情况下,我会画两条相同的线,一次从 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
});
});
为了不损害帧速率并避免以相同的方式绘制两次,最有效的方法是什么?请记住,它需要高效才能继续保持更高的帧速率。
仅当第一个节点的 id 小于第二个节点的 id 时,才能绘制该线。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何将函数包装在函数中以避免代码重复
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- RxJ避免外部状态,但仍然访问以前的值
- 循环访问链接对象,如何避免重复
- 避免对已经访问过的用户进行重定向
- 访问Node.js中其他promise函数中的firebase防火promise局部变量-避免全局
- 避免直接访问AngularJS中的视图(angular ui路由器)
- 如何避免在访问JavaScript数组中的元素时出错
- 如何避免“;否'访问控制允许来源'标头存在"javascript错误
- Chrome创建扩展名以避免源文件//是访问控制不允许的允许源文件
- AngularJS指令访问相同的作用域对象——避免覆盖
- Js如何避免通过命名空间访问类成员
- jQuery.remove(),分离DOM元素,但我仍然可以从代码访问元素.如何避免泄漏
- 避免在AngularJS中直接访问URL
- 按名称从指令访问作用域变量,避免使用eval
- 如何避免“请求报头字段”访问-控制-允许-报头&;从本地驱动器运行JavaScript
- 避免登录用户访问index.php