js 树形数据怎么能递归成下面这种数据结构


       { title: '江苏省',
        value: '江苏省',
        children: [
          {
            title: '江苏省-无锡市',
            value: '江苏省-无锡市',
            children: [
              {
                title: '江苏省-无锡市-宜兴市',
                value: '江苏省-无锡市-宜兴市',
                 children: [
                   {
                    title: '江苏省-无锡市-宜兴市-中国宜兴环保科技工业园',
                    value: '江苏省-无锡市-宜兴市-中国宜兴环保科技工业园',
                   },
                  {
                    title: '江苏省-无锡市-宜兴市-宜兴经济技术开发区',
                    value: '江苏省-无锡市-宜兴市-宜兴经济技术开发区',
                   },
                      ]
              },
            ],
          }, 
        ],
   { title: '江苏省',
    value: '江苏省',
    children: [
      {
        title: '无锡市',
        value: '无锡市',
        children: [
          {
            title: '宜兴市',
            value: '宜兴市',
             children: [
               {
                title: '中国宜兴环保科技工业园',
                value: '中国宜兴环保科技工业园',
               },
              {
                title: '宜兴经济技术开发区',
                value: '宜兴经济技术开发区',
               },
                  ]
          },
        ],
      }, 
    ],
阅读 1.2k
1 个回答

什么规则呢,根据-分割,去最后一个?是在原数据上操作,还是生成一个新的
下面代码是在原数据上操作的,生成新的话可以在操作前深拷贝一份

function changeTreeNode(node){
    node.forEach(item => {
        item.title = item.title.split('-').pop()
        item.value = item.value.split('-').pop()
        if(Array.isArray(item.children)){
            changeTreeNode(item.children)
        }
    })
}

// let newtree = JSON.parse( JSON.stringify(tree) )
// changeTreeNode(newtree)

或者直接

let newtree = JSON.parse( JSON.stringify(tree), function(key, value){
    return key == 'value' || key == 'title' ? value.split('-').pop() : value;
} )
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题