js树形菜单求出最大的年龄

以下是一个树形菜单,求出年龄最大的那一位和年龄最小的哪一位

let tree = {
        name: 老板,
        age: 46,
        children: [
            {
                name: 经理1,
                age: 36,
                children: [
                {
                    name: 主管1,
                    age: 25,
                    children: [
                        {
                            name: 员工1,
                            age: 20,
                            children: []
                        },
                        {
                            name: 员工2,
                            age: 18,
                            children: []
                        },
                        {
                            name: 员工3,
                            age: 23,
                            children: []
                        }
                    ]
                },
                {
                    name: 主管2,
                    age: 30,
                    children: []
                }
                ]
            },
            {
                name: 经理2,
                age: 38,
                children: []
            },
            {
                name: 经理3,
                age: 48,
                children: []
            },
        ]
    }

在写之前先把思路想好,个人思路是:是将每一项的数据都放在一个数组中,然后用排序对数组进行操作,之后就求出最大和最小的数据。

代码如下

//首先先创建一个空数组,用来存放每一位人员的数据
    let ageArr = [];

    //递归将每一个人员的数据添加到数组中
    function getMaxAge(tree){
        //首先来判断传来的数据是不是对象如果是就push进数组
        if(Object.prototype.toString.call(tree) === [object Object]){
            ageArr.push(tree)
        }
        //接着来判断children是否有数据,如果有就循环children调用getMaxAge
        if(tree?.children.length){
            tree.children.forEach(item => {
                getMaxAge(item)
            })
        }
    }

    //调用方法
    getMaxAge(tree) 
    //此时ageArr数组里面存储的是每一位人员的数据,用年龄进行从小到大排序
    let newAge = ageArr.sort((a, b) => a.age - b.age)

    //排序完成,就可以打印了
    console.log(`最大年龄是${newAge[newAge.length - 1].name}, ta的年龄是${newAge[newAge.length - 1].age}`);
    console.log(`最小年龄是${newAge[0].name}, ta的年龄是${newAge[0].age}`);
经验分享 程序员 微信小程序 职场和发展