当前位置: 首页 > news >正文

成都网站建设收费中铁建设集团门户网登录入口官网

成都网站建设收费,中铁建设集团门户网登录入口官网,开发一个微信公众号,共青城网站建设大家好,今天我要分享的是如何在树形结构的数据中,根据特定条件设置节点及其所有子节点的显示属性。在实际项目中,这种需求非常常见,特别是在需要动态展示和隐藏节点的情况下。下面我将通过一个具体的示例来讲解实现过程。 需求分析…

大家好,今天我要分享的是如何在树形结构的数据中,根据特定条件设置节点及其所有子节点的显示属性。在实际项目中,这种需求非常常见,特别是在需要动态展示和隐藏节点的情况下。下面我将通过一个具体的示例来讲解实现过程。

需求分析

假设我们有一个树形结构的数据,如下所示:

 const treeData = [{name: "父节点1",id: 1,children: [{name: "子节点1-1", id: 11, children: [{name: "酸菜", id: 111, children: [{ name: "豆芽", id: 1111, }]}, { name: "豌豆", id: 12, }]},{ name: "子节点1-2", id: 13 }]},{name: "父节点2",id: 2,children: [{ name: "子节点2-1", id: 22, },{name: "子节点2-2",id: 23,children: [{ name: "子节点2-2-1", id: 24 }]}]}];

我们的需求是:当输入一个文本时,找到所有name属性包含该文本的节点,并将这些节点及其所有子节点和所有父节点的show属性设置为true

实现步骤

  1. 初始化节点显示属性

    在开始遍历之前,我们需要将所有节点的show属性初始化为false。这可以通过递归遍历实现。

  2. 递归遍历树形结构

    我们编写一个递归函数traverse,用于遍历树形结构。当找到包含特定文本的节点时,我们需要将该节点及其所有子节点和所有父节点的show属性设置为true

  3. 设置子节点显示属性

    为了实现这一功能,我们添加了一个内部函数setChildrenTrue,该函数递归地将所有子节点的show属性设置为true

代码实现

以下是实现上述需求的完整代码:

function setSearchText(text) {// 初始化所有节点的show属性为falsefunction setFalse(node) {node.show = false;if (node.children) {node.children.forEach(child => setFalse(child));}}// 递归遍历树形结构并设置节点及其子节点和父节点的show属性function traverse(node, parent) {if (node.name.includes(text)) {node.show = true;parents.forEach(parent => {parent.show = true;});function setChildrenTrue(child) {child.show = true;if (child.children) {child.children.forEach(grandChild => setChildrenTrue(grandChild));}}if (node.children) {node.children.forEach(child => setChildrenTrue(child));}} else if (node.children) {node.children.forEach(child => traverse(child,[...parents, node]));}}// 遍历树之前先设置所有节点的show属性为falsetreeData.forEach(node => setFalse(node));// 从根节点开始遍历treeData.forEach(node => {traverse(node, []);});
}// 示例:设置包含"酸菜"的节点及其所有子节点和父节点的show属性为true
setSearchText("酸菜");console.log(treeData);

 用于树形节点过滤筛选

通过以上代码,我们成功实现了在树形结构数据中根据特定条件设置节点及其所有子节点的显示属性,通过遍历treeData,生成对应的ul和li,并根据show属性隐藏或显示,就能通过input输入框实现树结构的节点过滤啦

http://www.yayakq.cn/news/35441/

相关文章:

  • 湖北网站建设贴吧广西梧州发现1例阳性人员
  • ps做网站画布大小是多少未明潮网站建设保密协议
  • 莱芜市网站建设中国排建设银行悦生活网站
  • 扁平化蓝色网站适合年轻人开的工作室
  • 青岛胶东建设国际机场网站服务公司取名
  • 西安做网站优化京东导购网站开发
  • 教人做辐射4mod的网站敦煌网的网站推广方式
  • 17一起广州做网站wordpress 干净主题
  • 濮阳做网站的电话海南信息港官网
  • 企业手机网站建设策划方案广东网站建设哪家
  • 租门面做网站服务网站建设公司
  • 购物网站开发教程视频制作网站公司名称
  • 网站统计cnzzwordpress构建企业网站
  • 在直播网站做前端注意网络科技公司一般都是骗
  • 如何在服务器上放网站红塔区住房和城乡建设局网站
  • 吧台 东莞网站建设为网站做一则广告语
  • 怎么网站能找人做装修事淄博网站优化资讯
  • 网站分站加盟巩义专业网站建设公司推荐
  • 网站建设中的思想和算法typecho迁移wordpress
  • 江苏网站开发商丘网络营销公司
  • 校园电商平台网站建设郑州网站建设推广
  • 前沿的设计网站培训总结精辟句子
  • 家具网站建设规划书asp做网站技术怎样
  • 创建主题资源网站的学习_你觉得在主题资源建设方面有哪些收获?陕西建设网一体化平台
  • 建行网站查询密码是什么东西专业外贸网站制作
  • 校园二手物品交易网站开发背景wordpress 随机重复
  • 高端装饰公司网站设计营销公司官网
  • 做数学题的网站有吗点击网站排名
  • 中国建设部网官方网站wordpress 文章导出
  • 专做零食的网站中国营销