JS——数据处理

一个数组的数据是一组对象,对象可能有一个属性是与数组相似的结构

要求,把数组中对象中的一个值作为新对象的键,数组中对象的另一个值作为新对象的值,包括嵌套的数组中的对象都放到新对象中

如果有一个导航菜单的数据是下面的结构

const MenuList = [{
    key: '/dashboard',
    label: 'DASHBOARD',
    children: [{
        key: '/dashboard/console',
        label: '主控页',
    }, {
        key: '/dashboard/monitor',
        label: '监控页',
    }, {
        key: '/dashboard/workplace',
        label: '工作台',
    }]
}, {
    key: '/notion',
    label: '公告管理',
}, {
    key: '/charts',
    label: '图表管理',
    children: [{
        key: '/charts/bar',
        label: '柱状图'
    }, {
        key: '/charts/pic',
        label: '饼图'
    },]
}]

将上面数据转成下面的格式

const newMenuList = {
    "dashboard": "DASHBOARD",
    '/dashboard/console': "主控页",
    '/dashboard/monitor': "监控页",
    "/dashboard/workplace": "工作台",
    "/notion": "公告管理",
    "/charts": "图表管理",
    "/charts/bar": "柱状图",
    "/charts/pic": "饼图"
}

实现代码

const menuKeyAndLaber = (lists) => {
    //首先进行深拷贝
    const list = JSON.parse(JSON.stringify(lists))
    let newObj = {}
    const degui = (list) => {
        //先遍历数组
        list.forEach(item => {
            //遍历数组项的对象
            for (const key in item) {
                //将需要的值添加到新对象中
                if (key === "key") newObj[item.key] = item.label
                //如果有子项,需要用到递归
                if (key === 'children') degui(item[key])
            }
        });
    }
    //调用一下递归函数
    degui(list)
    //返回新数组
    return newObj
}

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值