Vue 里面对树状数组进行增删改查 的方法
[
{
"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 里面对树状数组进行增删改查 的方法的更多相关文章
- Shell数组的增删改查
Shell数组的增删改查 shell数组的定义及取值: a=(1 2 3) [root@bogon tmp]# echo ${a[*]} 1 2 3 [root@bogon tmp]# echo $ ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- HDU 5044 (树链剖分+树状数组+点/边改查)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5044 题目大意:修改链上点,修改链上的边.查询所有点,查询所有边. 解题思路: 2014上海网赛的变 ...
- HDU 1556 线段树/树状数组/区间更新姿势 三种方法处理
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- js数组的增删改查
array 数组的增删改: push 从数组后面推入一个元素或多个元素 var arr = [1,2,3]; // 返回:修改后数组的长度 arr.push(4,5,6); pop 删除数组最后一 ...
- vue.js+element ui Table+spring boot增删改查
小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...
- 【硬核】使用替罪羊树实现KD-Tree的增删改查
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习的第16篇文章,我们来继续上周KD-Tree的话题. 如果有没有看过上篇文章或者是最新关注的小伙伴,可以点击一下下方的传送门: ...
- thinkPHP增删改查的方法案例
thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化 ...
- dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...
随机推荐
- ubuntu16.04卸载docker
1.sudo apt-get remove docker-ce 2.apt-get remove -y docker-* rm -rf /var/lib/docker
- 一起了解 .Net Foundation 项目 No.14
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. .NET Core .NE ...
- 【JDK】JDK源码分析-HashMap(2)
前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...
- 031.核心组件-kubelet
一 kubelet概述 1.1 kubelet作用 在Kubernetes集群中,在每个Node(又称Minion)上都会启动一个kubelet服务进程.该进程用于处理Master下发到本节点的任务, ...
- 多个文件名大小写不同,是因为运行代码是大写E,用vscode运行的是小写e,解决方案:手动npm run dev #There are multiple modules with names that only differ in casing.
多个文件名大小写不同,是因为运行代码是大写E,用vscode运行的是小写e,解决方案:手动npm run dev #There are multiple modules with names that ...
- 异步编程RxJava-介绍
前言前段时间写了一篇对协程的一些理解,里面提到了不管是协程还是callback,本质上其实提供的是一种异步无阻塞的编程模式:并且介绍了java中对异步无阻赛这种编程模式的支持,主要提到了Future和 ...
- 雅奇880、990、小土豆调用EPX Studio 编译的DLL的编程方法~
在雅奇990中,使用“外部文件-调用链接库文件”命令实现与EP的通信,例如: 1.调用链接库文件(取项目文件信息() + '资源文件\Project1.dll', 'Unit1.rpas:Result ...
- Mysql优化大分页查询
如题,年前做了一个需求,涉及到Mysql大分页查询,整理一下,希望对需要的小伙伴有帮助. 背景分页查询的性能瓶颈B+树简述B+比起二叉查找树,有什么优势?分页查询过程测试集解决方法1 延迟关联法:2 ...
- 小白学 Python 数据分析(18):Matplotlib(三)常用图表(上)
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- git版本控制系统小白教程(上)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享. Git介绍 Git是目前世界上最先进的分布式版本控制系统.并且它是一个开源的分布式版本控制系 ...