鍍金池/ 問(wèn)答/HTML5  HTML/ 怎么遍歷這樣樹形結(jié)構(gòu)的數(shù)組

怎么遍歷這樣樹形結(jié)構(gòu)的數(shù)組

像這樣樹形結(jié)構(gòu)的數(shù)組,我想給所有的name 換成title,怎么遍歷呢。數(shù)組的層次不定,可能有的里面沒(méi)children。

const treeData = [{
    title: '0-0',
    key: '0-0',
    children: [{
      title: '0-0-0',
      key: '0-0-0',
      children: [
        { title: '0-0-0-0', key: '0-0-0-0' },
        { title: '0-0-0-1', key: '0-0-0-1' },
        { title: '0-0-0-2', key: '0-0-0-2' },
      ],
    }, {
      title: '0-0-1',
      key: '0-0-1',
      children: [
        { title: '0-0-1-0', key: '0-0-1-0' },
        { title: '0-0-1-1', key: '0-0-1-1' },
        { title: '0-0-1-2', key: '0-0-1-2' },
      ],
    }, {
      title: '0-0-2',
      key: '0-0-2',
    }],
  }, {
    title: '0-1',
    key: '0-1',
    children: [
      { title: '0-1-0-0', key: '0-1-0-0' },
      { title: '0-1-0-1', key: '0-1-0-1' },
      { title: '0-1-0-2', key: '0-1-0-2' },
    ],
  }, {
    title: '0-2',
    key: '0-2',
    children: []

  }];
回答
編輯回答
淺時(shí)光

哪里有 name?

2018年9月17日 12:09
編輯回答
大濕胸

遞歸遍歷

function setName(obj){
       for(var i in obj){
           obj[i].name = obj[i].title;
           if(obj[i].chilren){
               setName(obj[i].children)
           }
       }
       console.log(obj);
  }
  setName(treeData)
2017年8月17日 13:48
編輯回答
吃藕丑
JSON.parse(JSON.stringify(treeData).replace(/"title"/g,'"name"'))

如果只是題目中這種簡(jiǎn)單的結(jié)構(gòu)的話,一個(gè)偷懶的方法

2018年8月13日 09:10
編輯回答
深記你
function treedata(a){
            let d=a.map(r=>{
            if(r.children){
                 return {'name':r.title,'key':r.key,'children':treedata(r.children)}
            }else{
                return {'name':r.title,'key':r.key}
            }
          })
          return d
        }
        console.log(treedata(treeData))
2017年4月28日 12:42