如何取后台多层嵌套数据?

例如:

var data = [{
              title: '经济',
              category: [{
                   title: '第一产业',
                   category: [{
                        title: '农业',
                     }, {
                         title: '渔',
                     }]
                     },
                     {
                     title: '第二产业',
                     category: [{
                         title: '煤矿业',
                          }, {
                          title: '制造业'
                          }]
                        }
                    ]
                }, {
                    title: '文化',
                    category: [{
                            title: '历史',
                            category: []
                        },
                        {
                            title: '美食',
                            category: []
                        }
                    ]
                }]

想要的效果如下:

1.经济
  2.第一产业
    3.渔业
    3.农业
  2.第二产业
    3.煤矿
1.文化
  2.历史
  2.美食  

clipboard.png

如图,data是一个数组category嵌套层数不确定,该如何判断category是否存在嵌套,if{}else{}判断实在是太....而且不确定什么时候结束,这样的数据该 怎么判断??

clipboard.png

阅读 3.6k
2 个回答

写个递归试试

let data = [{
  a: 'a',
  category: [{
      a: 'a',
      category: [{
        a: 'a',
        category:[{
          a: 'a',
          category:[]
        }]
      }]
    }]
}]

function fn() {
  let count = 0
  function deep(data) {
    count++ //记录层级
    console.log(count) 
    // dosomething
    for (let i = 0; i<data.length; i++) {
      // dosomething
      console.log(data[i])
      if (data[i].category) {
        deep(data[i].category)
      } 
    }
  }
  deep(data)
}

fn()

递归了解一下。

function render (arr, level) {
    level = level || 0
    level++
    let i = 0
    let len = arr.length
    for (;i < len; i++) {
      document.write(level + '.' + arr[i].title + '<br />')
      if (arr[i].category && arr[i].category.length > 0) {
        render(arr[i].category,level)
      } else {
        console.log('not' + arr[i].title)
      }
    }
  }

更新:改造一下,加个level完事儿。早点给数据格式不就完了吗。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题