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}`);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值