js 树形结构根据id获取父级节点元素

封装函数

// 传入 id、树形结构数据
export function getParentTree(id, tree) {
  let arr = [] //要返回的数组
  for (let i = 0; i < tree.length; i++) {
    let item = tree[i]
    arr = []
    arr.push(item) //保存当前节点id
    if (id== item.id) {
      //判断当前id是否是默认id
      return arr //是则退出循环、返回数据
    } else {
      //否则进入下面判断,判断当前节点是否有子节点数据
      if (item.children && item.children.length > 0) {
        //合并子节点返回的数据
        arr = arr.concat(getParentTree(id, item.children ? item.children : []))
        console.log(arr)
        if (arr.map(item2 => (item2 ? item2.id : '')).includes(id)) {
          //如果当前数据中已包含默认节点,则退出循环、返回数据
          return arr
        }
      }
    }
  }

调用函数

const treeData = [{
  name: '1',
  id: 1,
  children: [{
    name: '1-1',
    id: 2,
    children: [{
      name: '1-1-1',
      id: 4,
    }],
    name: '1-2',
    id: 3,
    children: [{
      name: '1-2-1',
      id: 5,
    }],
  }]
},{
  name: '2',
  id: 6,
  children: [{
    name: '2-1',
    id: 7,
    children: [{
      name: '2-1-1',
      id: 9,
    }],
    name: '2-2',
    id: 8,
    children: [{
      name: '2-2-1',
      id: 10,
    }],
  }]
}]
console.log(getParentTree(5, treeData))

原文链接:https://www.cnblogs.com/zhanlibiao/p/17388752.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 树形结构根据id获取父级节点元素 - Python技术站

(0)
上一篇 2023年5月11日
下一篇 2023年5月17日

相关文章

  • JS操作时间 – UNIX时间戳的简单介绍(必看篇)

    JS操作时间 – UNIX时间戳的简单介绍(必看篇) 在Web开发中,经常需要使用JavaScript操作时间,比如获取当前时间、格式化时间、计算时间差等。其中,UNIX时间戳是一个非常重要的概念。本文将介绍UNIX时间戳的基本含义、使用方法以及示例应用。 什么是UNIX时间戳 UNIX时间戳是自1970年1月1日00:00:00 UTC到某个时间点所经过的…

    JavaScript 2023年5月27日
    00
  • 详解javascript跨浏览器事件处理程序

    首先让我们来详细讲解“详解JavaScript跨浏览器事件处理程序”的完整攻略。 1. 为什么需要跨浏览器事件处理程序? 在不同的浏览器中,事件处理程序(比如click、mouseover等等)的调用方式可能不一样,比如IE浏览器使用attachEvent来绑定事件,而其他浏览器(比如Firefox、Chrome等)则使用addEventListener来绑…

    JavaScript 2023年5月27日
    00
  • 设置cookie指定时间失效(实例代码)

    设置 cookie 失效时间是保持 Web 应用程序状态的关键技术之一。下面是如何在 PHP 中设置指定时间失效的 cookie 的完整攻略: 步骤 1:创建 cookie 要在 PHP 中设置 cookie,可以使用 setcookie() 函数。该函数的语法如下: setcookie(name, value, expire, path, domain, …

    JavaScript 2023年6月11日
    00
  • js中substring和substr的详细介绍与用法

    JS中substring和substr的详细介绍与用法 概述 JavaScript中的substring()和substr()函数均可用于截取一个字符串的一部分,但它们的使用方式略有不同。 substring() substring()函数用于截取字符串的一部分,并返回一个新的字符串。它接受两个参数,第一个参数是起始位置,第二个参数是结束位置(不含)。如果没…

    JavaScript 2023年5月28日
    00
  • javascript self对象使用详解

    JavaScript Self对象使用详解 什么是Self对象? Self对象指的是JavaScript中的this关键字,它代表当前对象。可以在对象的方法中使用this关键字来引用当前对象,或者用在一个方法中引用其他方法。 如何使用Self对象? 在对象方法中使用Self对象 在JavaScript的对象方法中使用this关键字可以引用到当前的对象。如下例…

    JavaScript 2023年5月27日
    00
  • JavaScript RegExp 对象

    JavaScript中的RegExp对象是用于处理正则表达式的内置对象。正则表达式是一种用于匹配字符串模式的工具,可以用于搜索、替换和验证字符串。下面是关于RegExp对象的完整攻略,包括语法、属性、方法和示例。 RegExp对象的语法 JavaScript的RegExp有两种创建方式: 字面方式:使用正则表达式字面量创建RegExp对象,语法如下: /pa…

    JavaScript 2023年5月11日
    00
  • JavaScript Navigator对象(浏览器相关对象)

    JavaScript的Navigator对象代表浏览器的导航信息,即浏览器相关的信息,它包含了一些有关浏览器和系统的信息,例如浏览器的名称、版本、语言、操作系统等。可以通过访问一些属性和方法来获取这些信息。下面,将详细讲解Navigator对象并提供代码示例。 1. 属性 (1)appName 描述:返回当前浏览器的名称(不考虑版本号) 代码: consol…

    Web开发基础 2023年3月30日
    00
  • JavaScript学习笔记(三):JavaScript也有入口Main函数

    接下来我将详细讲解“JavaScript学习笔记(三):JavaScript也有入口Main函数”的完整攻略。 什么是JavaScript的入口Main函数? 在很多编程语言中,都有一个入口函数,比如Java中的main函数、C++中的main函数等等。在JavaScript中,虽然没有像Java、C++那样明确的入口函数,但是我们可以通过编写一个init函…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部