SOURCE

let x = [
    {
        id: 'A',
        title: '第一层A',
        children: [
            {
                id: 'A-1',
                title: '第二层A-1',
                children: []
            }
        ]
    },
    {
        id: 'B',
        title: '第一层B',
        children: null
    },
    {
        id: 'C',
        title: '第一层C',
        children: [
            {
                id: 'C-1',
                title: '第二层C-1',
                children: []
            },
            {
                id: 'C-2',
                title: '第二层C-2',
                children: [
                    {
                        id: 'C-2-1',
                        title: '第三层C-2-1',
                    }
                ]
            },
            {
                id: 'C-3',
                title: '第二层C-3',
                children: null
            },
            {
                id: 'C-4',
                title: '第二层C-4',
                children: [
                    {
                        id: 'C-4-1',
                        title: '第三层C-4-1',
                    }
                ]
            },
        ]
    }
]
var list =[]
var recursiveFunction = function(){
    var str = []
    const getStr = function(list){
        list.forEach(row=>{
            if(row.children && row.children.length){
                getStr(row.children)
            }else {
               str.push(row)
            }
        })
    }
    getStr(x)
    list = str
    console.log(list)
}
recursiveFunction()

var list1 =[]
var recursiveFunction1 = function(){
    var str1 = []
    const getStr1 = function(list1){
        list1.forEach(row1=>{
        if(!row1.children){
            str1.push(row1)
        }else {
            getStr1(row1.children) 
            
        }
        })
    }
    getStr1(x)
    list1 = str1
    // console.log(list1)
}
recursiveFunction1()


var list2 =[]
var ids="C-2-1"
var recursiveFunction2 = function(data, id){
        let res = [];
        const findIds = (data, temp = []) => {
          data.forEach((node,index)=>{
              if(node.children==null){
                  node.children=[]
              }
            if (node.children.length > 0) {
              findIds(node.children, temp.concat(index));
            } else {
              if (node.id == id) {
                temp.push(index)
                res = temp;
              }
            }
          }) 
        }
        findIds(data, []);
        // console.log(res)
        return res;
}
recursiveFunction2(x,ids)
console 命令行工具 X clear

                    
>
console