返回顶部
首页 > 资讯 > 前端开发 > node.js >JavaScript如何处理树状结构数据的增删改查
  • 190
分享到

JavaScript如何处理树状结构数据的增删改查

2024-04-02 19:04:59 190人浏览 安东尼
摘要

这篇文章主要介绍“javascript如何处理树状结构数据的增删改查”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何处理树状结构数据的增删改查

这篇文章主要介绍“javascript如何处理树状结构数据的增删改查”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何处理树状结构数据的增删改查”文章能帮助大家解决问题。

JavaScript如何处理树状结构数据的增删改查

问题描述:js处理树状结构的增删改查

最近在开发一个后台管理系统的权限管理模块,涉及到各种树状结构的数据处理逻辑,例如:增,删,改,查等;相比普通的数组结构数据,树状结构的处理就没有数组那么的直观,但是也没那么复杂,需要多一步——递归查找来对数据进行深度遍历操作,那么这里呢,博主也将开发过程中总结出来的方法分享给大家,一文带你吃透JS树装结构数据处理:

JavaScript如何处理树状结构数据的增删改查

数据结构示例

  let data = [{
        id: 1,
        label: '一级 1',
        children: [{
          id: 4,
          label: '二级 1-1',
          children: [{
            id: 9,
            label: '三级 1-1-1'
          }, {
            id: 10,
            label: '三级 1-1-2'
          }]
        }]
      }, {
        id: 2,
        label: '一级 2',
        children: [{
          id: 5,
          label: '二级 2-1'
        }, {
          id: 6,
          label: '二级 2-2'
        }]
      }, {
        id: 3,
        label: '一级 3',
        children: [{
          id: 7,
          label: '二级 3-1'
        }, {
          id: 8,
          label: '二级 3-2'
        }]
      }];

解决方案:

1、新增节点

查找树装结构的指定节点,新增子节点,代码如下:

const appendnodeInTree = (id, tree, obj) => {
  tree.forEach(ele=> {
    if (ele.id === id) {
      ele.children ? ele.children.push(obj) : ele.children = [obj]
    } else {
      if (ele.children) {
        appendNodeInTree(id, ele.children, obj)
      }
    }
  })
  return tree
}

2、删除节点

查找树装结构的指定节点,删除节点,代码如下

const removeNodeInTree=(treeList, id)=> { // 通过id从数组(树结构)中移除元素
  if (!treeList || !treeList.length) {
    return
  }
  for (let i = 0; i < treeList.length; i++) {
    if (treeList[i].id === id) {
      treeList.splice(i, 1);
      break;
    }
    removeNodeInTree(treeList[i].children, id)
  }
}

3、修改节点

递归查找并修改某个节点的状态,代码如下:

  const updateNodeInTree=(treeList,id, obj)=> {
      if (!treeList || !treeList.length) {
        return;
      }
      for (let i = 0; i < treeList.length; i++) {
        if (treeList[i].id == id) {
          treeList[i]= obj;
          break;
        }
        updateNodeInTree(treeList[i].children,id,obj);
      }
    }

4、查找节点

递归查找树形节点的某个节点,代码:

const findNodeInTree = (data, key, callback) => {
      for (let i = 0; i < data.length; i++) {
        if (data[i].key == key) {
          return callback(data[i], i, data)
        }
        if (data[i].children) {
          findNodeInTree (data[i].children, key, callback)
        }
      }
    }

    // 所查找到的节点要存储的方法
    let Obj={}
    findNodeInTree(data, key, (item, index, arr) => {
      Obj = item
    })

    // 此时就是Obj对应的要查找的节点
    console.log(Obj)

关于“JavaScript如何处理树状结构数据的增删改查”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网node.js频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: JavaScript如何处理树状结构数据的增删改查

本文链接: https://lsjlt.com/news/98328.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript如何处理树状结构数据的增删改查
    这篇文章主要介绍“JavaScript如何处理树状结构数据的增删改查”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何处理树状结构数据的增删改查...
    99+
    2024-04-02
  • 一文吃透JS树状结构的数据处理(增删改查)
    目录问题描述解决方案1、新增节点2、删除节点3、修改节点4、查找节点总结问题描述 JS处理树状结构的增删改查 最近在开发一个后台管理系统的权限管理模块,涉及到各种树状结构的数据处理逻...
    99+
    2024-04-02
  • JavaScript树形数据结构处理
    目录树形数据的一些相关处理方法1. 递归查找当前节点2. 递归获取当前节点及以下的所有节点id3. 递归判断所有后代节点中有无此节点中的一个4. 递归树形数据扁平化5. 扁平化数据转...
    99+
    2024-04-02
  • 【数据结构】—— 单链表的增删改查
    ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:@周小末天天开心 各位大佬的点赞👍 收藏⭐ 关注✅,是本人学习的最大动力 感谢! 📕该篇文章收录专栏—...
    99+
    2023-09-04
    java 开发语言 数据结构
  • 数据库基本增删改查与修改表结构
    数据库基本增删改查 1、 增—添加/插入数据 insert into插入哪张表,那些列,什么值,语句:insert into 表名(列1,列2,列3)values (值1,值2...
    99+
    2024-04-02
  • vue实现树形结构增删改查的示例代码
    其实很多公司都会有类似于用户权限树的增删改查功能,正好最近我刚写了一个树形结构的增删改,在这里和大家分享一下,如果有不合理的地方欢迎评论,我会尽快优化~~ 先附上一下效果图 这个是没...
    99+
    2024-04-02
  • Java数据结构之链表的增删查改详解
    目录一、链表的概念和结构1.1 链表的概念1.2 链表的分类二、单向不带头非循环链表2.1 创建节点类型2.2 头插法2.3 尾插法2.4 获取链表长度2.5 任意位置插入2.6 查...
    99+
    2024-04-02
  • php如何处理增改删查页
    本文小编为大家详细介绍“php如何处理增改删查页”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何处理增改删查页”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、数据库连接在PHP中,要与数据库进行交互,...
    99+
    2023-07-06
  • mysql笔记--数据库基本增删改查 修改表结构
    数据库基本增删改查 1、 增—添加/插入数据,insert into插入哪张表,那些列,什么值,语句:insert into 表名(列1,列2,列3)values (值1,值2,值3);...
    99+
    2024-04-02
  • JAVA如何把数据库的数据处理成树形结构
    目录前言😎实现思路😎完整代码总结-核心代码前言 不知道大家在做项目的时候有没有接触到将平平无奇数据结合处理成有层次的数据呢,类似下面这样 或者 ...
    99+
    2024-04-02
  • js如何构造elementUI树状菜单的数据结构详解
    背景说明 elementUI中自带树状菜单,就是数据结构有点复杂,偏向json风格。 数据库中菜单数据是二维表格,通过parentPk定义上下级,是list型。 需要把list转换...
    99+
    2024-04-02
  • 数据库的增删改查如何实现
    数据库的增删改查操作可以通过SQL语句来实现。下面以MySQL数据库为例,介绍增删改查的常见操作:1. 增加(Insert):使用I...
    99+
    2023-08-31
    数据库
  • php如何实现数据的增删改查
    PHP可以通过以下方式实现数据的增删改查:1. 数据的增加(Create):- 使用SQL语句插入数据:可以使用`INSERT IN...
    99+
    2023-08-23
    php
  • Mysql 数据库表如何增删改查
    这篇文章将为大家详细讲解有关Mysql 数据库表如何增删改查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、表操作1、【增加】 create table ...
    99+
    2024-04-02
  • mysql如何进行表数据的增删改查
    这篇文章主要介绍mysql如何进行表数据的增删改查,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在mysql中,可以使用SELECT语句进行表数据的查询,使用INSERT语句...
    99+
    2024-04-02
  • Java 处理树形结构数据的过程
    目录前言处理过程接下来分析下具体的实现;1、导入的时候以层级保存数据 2、返回树形层级结构数据返回树形层级数据数据导入前言 问题的背景大概是这样的,有下面这样一个excel...
    99+
    2022-11-13
    java 树形结构数据 java 结构数据
  • 如何使用Jorm增删查改数据库
    这篇文章主要介绍“如何使用Jorm增删查改数据库”,在日常操作中,相信很多人在如何使用Jorm增删查改数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Jorm增删...
    99+
    2024-04-02
  • 如何实现Vue中数据的增删改查并结合对话框
    近年来,随着前端技术的不断发展,Vue已经成为了越来越多开发者选择的前端框架。其中,前端数据的增删改查是Web应用程序中最基础的功能之一。在Vue中,如何实现增删改查的同时跳出一个对话框呢?接下来,本文将为您介绍如何实现Vue中数据的增删改...
    99+
    2023-05-14
  • AJAX如何实现数据的增删改查操作
    这篇文章主要介绍了AJAX如何实现数据的增删改查操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主页:index.html<!DOCTYPE html>...
    99+
    2023-06-08
  • PyQt5如何实现数据的增删改查功能
    这篇文章主要介绍“PyQt5如何实现数据的增删改查功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PyQt5如何实现数据的增删改查功能”文章能帮助大家解决问题。话不多说,还是先来梳理一下需要的第三...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作