递归使用和多维数组对象变一维数组对象

一、递归树形数据

var obj = [
     {
         id: '1536225102260137986',
         name: '六级6',
         level: 1,
         parentId: '-1',
         remark: '',
         children: [
             {
                 id: '1539413104865148929',
                 name: '8',
                 level: 2,
                 parentId: '1536225102260137986',
                 remark: '',
                 children: [
                     {
                         id: '1539425671465500673',
                         name: '8.1',
                         level: 3,
                         parentId: '1539413104865148929',
                         remark: '',
                         children: null,
                     },
                     {
                         id: '1539435042027175937',
                         name: '8.2',
                         level: 3,
                         parentId: '1539413104865148929',
                         remark: '',
                         children: [
                             {
                                 id: '1539435619528310786',
                                 name: '8.2.1',
                                 level: 4,
                                 parentId: '1539435042027175937',
                                 remark: '',
                                 children: null,
                             },
                         ],
                     },
                     {
                         id: '1539446851840868354',
                         name: '8.3',
                         level: 3,
                         parentId: '1539413104865148929',
                         remark: '',
                         children: null,
                     },
                 ],
             },
             {
                 id: '1539434602904518658',
                 name: '8.1',
                 level: 2,
                 parentId: '1536225102260137986',
                 remark: '',
                 children: null,
             },
             {
                 id: '1539446726481510402',
                 name: '9',
                 level: 1,
                 parentId: '1536225102260137986',
                 remark: '',
                 children: null,
             },
         ],
     },
     {
         id: '1536236627473526785',
         name: '七级7.1',
         level: 1,
         parentId: '-1',
         remark: '',
         children: [
             {
                 id: '1536245410367074305',
                 name: '七级7.1',
                 level: 1,
                 parentId: '1536236627473526785',
                 remark: '',
                 children: [
                     {
                         id: '1539792426864050177',
                         name: '8.1',
                         level: 2,
                         parentId: '1536245410367074305',
                         remark: '',
                         children: null,
                     },
                 ],
             },
         ],
     },
     {
         id: '1539167455968067586',
         name: '日期',
         level: 1,
         parentId: '-1',
         remark: '',
         children: [
             {
                 id: '1539167630363033602',
                 name: '今天',
                 level: 2,
                 parentId: '1539167455968067586',
                 remark: '',
                 children: null,
             },
         ],
     },
     {
         id: '1539794235812835329',
         name: 'test',
         level: 1,
         parentId: '-1',
         remark: '',
         children: null,
     },
     {
         id: '1539800261748420609',
         name: '心情',
         level: 1,
         parentId: '-1',
         remark: '',
         children: [
             {
                 id: '1539800324059000833',
                 name: '好',
                 level: 2,
                 parentId: '1539800261748420609',
                 remark: '',
                 children: [
                     {
                         id: '1539801422505275394',
                         name: '中',
                         level: 3,
                         parentId: '1539800324059000833',
                         remark: '',
                         children: null,
                     },
                     {
                         id: '1539805697016950786',
                         name: '不错',
                         level: 3,
                         parentId: '1539800324059000833',
                         remark: '',
                         children: null,
                     },
                     {
                         id: '1539806278271987713',
                         name: '还行',
                         level: 3,
                         parentId: '1539800324059000833',
                         remark: '',
                         children: null,
                     },
                     {
                         id: '1539808118615142402',
                         name: '一般般',
                         level: 3,
                         parentId: '1539800324059000833',
                         remark: '',
                         children: null,
                     },
                     {
                         id: '1539808207265951745',
                         name: 'OK',
                         level: 3,
                         parentId: '1539800324059000833',
                         remark: '',
                         children: null,
                     },
                 ],
             },
         ],
     },
 ]
 // 递归
 function getJsonTree(data) {
     let nowObj = data.map(item => ({
         ...item,
         icon: '图片',
         children:
             item.children && item.children.length ? getJsonTree(item.children) : null,
     }))
     return nowObj
 }
 console.log(obj, getJsonTree(obj))

二、找到树图某个Id下的name (递归)

let id = 1539792426864050177 //name:8.1
   let name
   function getName(data) {
       data.forEach(item => {
           if (item.id == id) {
               name = item.name
           } else {
               item.children && item.children.length ? getName(item.children) : null
           }
       })
       return name
   }
   console.log(getName(obj), 'getName')

三、找到树图某个Id下的name (数组扁平化)

function getSortName(list) {
  let res = []
  res = list.concat(
      ...list
          .map(item => {
              if (item.children instanceof Array && item.children.length > 0) {
                  return this.getSortName(item.children)
              }
              return null
          })
          .filter(o => o instanceof Array && o.length > 0)
  )
  return res
}
console.log(getSortName(obj), 'getName')

链接: https://wenku.baidu.com/view/7996d7d2f51fb7360b4c2e3f5727a5e9856a2728.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值