一个列表 只做增量操作
function diffAndConvert(arr1, arr2) {
//将arr2同步成arr1,并且对arr2扩展
arr2.forEach((v, i) => {
var flag1 = false;
arr1.forEach(v1 => {
if (v.id == v1.id) {
flag1 = true;
}
});
if (flag1 == false && arr2.length != 0) {
arr2.splice(i, 1);
}
});
arr1.forEach(v => {
var flag = false;
arr2.forEach(v1 => {
if (v1.id == v.id) {
for(let items in v){
if(items!=='dataList'){
v1[items] = v[items];
}
}
flag = true;
}
});
if (flag == false) {
arr2.push(v);
if(!v.dataList){
active=v;
}
}
});
arr1.forEach(v => {
arr2.forEach(v1 => {
if (v1.id == v.id) {
if (v.dataList && v.dataList.length != 0) {
diffAndConvert(v.dataList, v1.dataList);
}
}
});
});
}
//此处可以优化
先做递归删除 后边添加和修改的部分可以用loadash的merge 为了保证原数组的状态 可以只在初始化的时候加入状态
以后合并就不会影响其状态
//进一步优化数据量大的时候每次新增或者修改记录父级id 之后只遍历该父级就可
笔记的深度监听方式和组合的_equal方式哪个更好(可以优化吗 容易出问题 因为深度watch性能不好 而且多次频繁变化不容易掌控)和组合的每次点击对比哪个好
拖拽移动 和可拖拽式布局
笔记滚动鼠标实现文字放大缩小 监听滚动事件 用zoom来实现