[
{
"id":"5e4c3b02fc984961a17607c37712eae0",
"optLock":0,
"parentId":"31372c5ce7c84eb1862c21b5af85b4d2",
"name":"1111",
"type":0,
"subCatalogues":
[
{
"id":"7bf755f26c0e499898504a34877a4fce",
"optLock":0,
"parentId":"5e4c3b02fc984961a17607c37712eae0",
"name":"3333",
"type":0,
"subCatalogues":[
{
"id":"2b08b56ab72641ffa1373813082e95c5",
"optLock":0,"
parentId":"7bf755f26c0e499898504a34877a4fce",
"name":"4444",
"type":1,"
subCatalogues":null
      }
    ]
  }
 ]
},
{
"id":"dcf5854558ae47e7b52918c4af861385",
"optLock":0,
"parentId":"31372c5ce7c84eb1862c21b5af85b4d2",
"name":"2222",
"type":0,
"subCatalogues":[
{
"id":"7acad754831b4b81b87bff33d6090166",
"optLock":0,
"parentId":"dcf5854558ae47e7b52918c4af861385",
"name":"5555",
"type":0,
"subCatalogues":[
{
"id":"4eb8db6f27f644b28a8c791208f55946",
"optLock":0,
"parentId":"7acad754831b4b81b87bff33d6090166",
"name":"6666",
"type":1,
"subCatalogues":null
  }
]

  上面是数据结构, 方法实现的目的,通过传入的 parentId 找到父级,向父级的subCatalogues添加 一个对象

   handleLocalData(pId) {
return findPidNode(this.data) //这里的data 数据就是 上面的数组
function findPidNode(data) {
data = data ? data : []
for (let i = 0, n = data.length; i < n; i++) {
let node = findInTree(data[i])
if (node) {
return node //这里得到的就是 parentId 得到的父级对象
}
}
}
function findInTree(tree) {
if (tree.id == pId) {
return tree
} else {
return findPidNode(tree.subCatalogues)
}
}
}

  通过数组是引用数据类型特征,改变数据结构就能引起 this.data 里面数据的变化,从而引起ui 图的跟新

  如何使用 handleLocalData() 方法(这里删除来说):

            let node = this.handleLocalData(this.parentId) //这里得到的this.parentId就是上面数据结构里面的 parentId,因为我通过ui 组件单独他它给列出来啦
if (node) { //这里判断是因为 在顶级的数组是没有parentId 的 ,如果没有父级 就需要想同级添加了,而不是添加到 subCatalogues 里面
let index = node.subCatalogues.findIndex(
e => e.id == this.parentId
)
node.subCatalogues.splice(index, 1)
} else {
let index2 = 0
this.data.forEach((item, index) => {
if (item.id == this.parentId) {
index2 = index
}
})
this.data.splice(index2, 1)
}

  

Vue 里面对树状数组进行增删改查 的方法的更多相关文章

  1. Shell数组的增删改查

    Shell数组的增删改查 shell数组的定义及取值: a=(1 2 3) [root@bogon tmp]# echo ${a[*]}  1 2 3 [root@bogon tmp]# echo $ ...

  2. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  3. HDU 5044 (树链剖分+树状数组+点/边改查)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5044 题目大意:修改链上点,修改链上的边.查询所有点,查询所有边. 解题思路: 2014上海网赛的变 ...

  4. HDU 1556 线段树/树状数组/区间更新姿势 三种方法处理

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. js数组的增删改查

    array 数组的增删改: push 从数组后面推入一个元素或多个元素 var arr = [1,2,3]; ​ // 返回:修改后数组的长度 arr.push(4,5,6); pop 删除数组最后一 ...

  6. vue.js+element ui Table+spring boot增删改查

    小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...

  7. 【硬核】使用替罪羊树实现KD-Tree的增删改查

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习的第16篇文章,我们来继续上周KD-Tree的话题. 如果有没有看过上篇文章或者是最新关注的小伙伴,可以点击一下下方的传送门: ...

  8. thinkPHP增删改查的方法案例

    thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化 ...

  9. dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)

    jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...

随机推荐

  1. CSS Sprite雪碧图的应用

    CSS雪碧图,即CSS Sprite,也有人叫它CSS精灵图,是一种图像拼合技术.该方法是将多个小图标和背景图像合并到一张图片上,然后利用CSS的背景定位来显示需要显示的图片部分. 雪碧图的使用场景 ...

  2. 题解-[HNOI2001]遥控赛车比赛

    题解-[HNOI2001]遥控赛车比赛 前置知识:记忆化搜索.\(\texttt{Bfs}\). 参考资料 https://www.luogu.com.cn/blog/CYJian/solution- ...

  3. 【DPDK】谈谈DPDK如何实现bypass内核的原理 其一 PCI设备与UIO驱动

    [前言] 随着网络的高速发展,对网络的性能要求也越来越高,DPDK框架是目前的一种加速网络IO的解决方案之一,也是最为流行的一套方案.DPDK通过bypass内核协议栈与内核驱动,将驱动的工作从内核态 ...

  4. python正则表达式之re模块使用

    python第一个正则表达式 https://www.imooc.com/learn/550 r'imooc'  Pattern Match result In [2]: import re In [ ...

  5. 钉钉小程序不用canvas在后端绘图前端用image标签获取图片的实践

    公司的需求要用电子员工卡代替用了N久的工作证,在各种场合刷二维码来代替刷卡.在钉钉小程序里实现.感觉这回又要躺坑里了. 钉钉小程序第一次做.我这个自封的GDI+大神才不要想用钉钉jsapi的方式用ca ...

  6. Vue方式自动打开浏览器配置

    Vue方式自动打开浏览器配置 1. 通过 package.json 配置项目 // 必须是符合规范的json语法 "vue": { "devServer": { ...

  7. C++ non-const lvalue reference cannot bind to a temporary

    1. 问题代码 #include <iostream> #include <vector> //注意begin和end形参都声明为引用 bool find_int(std::v ...

  8. UICollectionViewCell设置阴影

    //@mg:masksToBounds必须为NO否者阴影没有效果 // cell.layer.masksToBounds = NO; cell.layer.contentsScale = [UIScr ...

  9. Map - 与君初相识

    前言 生活中,我们常会看到这样一种集合:IP地址与主机名,身份证号与个人等,这种一 一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对应关系的对象,即 java.util.Map 接口 ...

  10. 在Deepin系统上装Python 3.8遇到的那些坑

    - 作为一天时间在Deepin上都没装好Python的代表,我感觉有必要记录一下我自己的解决方法 坑1-- SSL/TLS 字样错误 "pip is configured wih locat ...