json遍历成树结构 - 递归

本文介绍了如何通过递归方法将JSON数据转换为树形结构,详细阐述了过程并提供了具体的实现步骤,最终展示了转换后的输出结果。

1、json数据:

  created () {
	let testData = [
            {
                "id": 10001,
                "name": "华南地区",
                "serial_no": "HNDQ01",
                "parent_id": 0,
                "level": 0
            },
            {
                "id": 10002,
                "name": "广州地区",
                "serial_no": "GZDQ01",
                "parent_id": 10001,
                "level": 1
            },
            {
                "id": 10005,
                "name": "东莞地区",
                "serial_no": "DGDQ01",
                "parent_id": 10001,
                "level": 1
            },
            {
                "id": 10003,
                "name": "义乌地区",
                "serial_no": "YWDQ01",
                "parent_id": 0,
                "level": 0
            },
            {
                "id": 10004,
                "name": "南昌地区",
                "serial_no": "NCDQ01",
                "parent_id": 0,
                "level": 0
            }
        ]

	let treeData = this.getTree(0, testData) // 调用, 0 代表从父节点id为0开始

	console.log( treeData )

   },

method: {
   getTree ( id, array ) { // 获取客户分类的树结构
    let samelevel = this.getSameLevel( id, array ) // 获取同级数组
    if ( samelevel.length > 0 ) {
      samelevel.forEach( item => {
        item.children = this.getTree(item.id, array)
      })
    }
    return samelevel
   },

   getSameLevel ( id, array ) { // 获取同级数组,id: 当前父级id,也就是要找子节点的parent_id == id, array: 原数组
    let newArray = []
    array.forEach( item => {
      if ( item.parent_id == id ) {
        newArray.push(item)
      }
    })
    return newArray
   },
    
}

3、输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值