发表于: 2017-05-19 23:53:28
2 929
今天完成的事情:
需要拼接数据是因为返回数据离散,没有共同根节点,所以要根据职业技能点来找出他们的上层,上上层,一直到根节点,这样生成的新数组才能调用封装的脑图插件。
1、今天和后端调通了数据,将单个任务已掌握技能这个功能修复完成,并修改一个bug,优化了代码,之前我拼接技能点是根据已掌握技能点进行拼接,拼接完成的条件是找到parent_id为0的项,这样要经过几次遍历,而我之前是遍历完成后再除重,由于单个任务技能点数据较少看不出啥来,但是现在已掌握技能,技能点多,这样一来就造成了严重的性能问题,我打印了一下,生成了一个4万多个元素的数组,然后对这个数据遍历除重,结果浏览器炸了。。。。
解决办法是直接在对两组数据遍历时除重,例如x.indexOf(y)<0即x数组里面没有y元素,那么可以加入。
2、这个问题解决后,网页加载速度提升了不少,然后查看一下数据,发现数据非常的整齐,发现判断拼接完成的条件parent_id为0不行,某些数据没有遍历到就跳过了。我知道这里要用递归的办法,但是递归条件我一直找不到,最后只能加一个循环次数解决,目前数据层级不深,基本循环4、5次就能将所有数据拼接起来
//拼接成树状图,x是职业技能点,y是处理的数据,index是循环次数,由于有些节点较深,加上递归条件不好找,只能暂时这么处理
vm.skillTree = function (x, y,index) {
for (var i=0; i<index; i++){
angular.forEach(x, function (value) {
angular.forEach(y, function (list) {
if (value.id == list.parent_id) {
if(y.indexOf(value)<0) {
y.push(value)
}
}
})
})
}
};
明天计划的事情:
修改草船云4期bug
遇到的问题:
以上
收获:
写代码还是要多想想,差点就留了一个大坑
评论