为了账号安全,请及时绑定邮箱和手机立即绑定

求教一个js递归函数的写法

求教一个js递归函数的写法

RISEBY 2019-03-20 10:15:31
工作中需要用到一个js递归的写法,实在写不出来,求帮助,可以加微信发大红包!!!有诚信~~~数据结构如下:[      {        key: '1',        name: 'name',        label: '人事管理',        items: [          {            name: 'name',            key: '1-1',            label: '员工管理',            items: [              {                name: 'name',                key: '1-1-1',                label: '员工管理-0',                items: [                  {                    name: 'name',                    key: '1-1-1-1',                    label: '员工管理-0-0',                    items: '',                  },                  {                    name: 'name',                    key: '1-1-1-2',                    label: '员工管理-0-1',                    items: '',                  },                ],              },              {                name: 'name',                key: '1-1-2',                label: '员工管理-1',                items: '',              },            ],          },          {            name: 'name',            key: '1-2',            label: '部门管理',            items: [              {                name: 'name',                key: '1-2-1',                label: '部门管理1',                items: '',              },              {                name: 'name',                key: '1-2-2',                label: '部门管理2',                items: '',              },            ],          },          {            name: 'name',            key: '1-3',            label: '职位管理',            items: [              {                name: 'name',                key: '1-3-1',                label: '职位管理1',                items: '',              },              {                name: 'name',                key: '1-3-2',                label: '职位管理2',                items: '',              },            ],          },        ],      },    ];可能有无数层级递归下去...要求是,数据中的'key'字段本身是没有的,要循环生成出来,按照层级,生成出n-n-n的格式...所以就是,一个递归函数,传入这样一组数据,返回结构和内容一致,但是带有n-n-n的key的数据...
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

function f(datas, keys) {

  datas.forEach((item, i) => {

    keys.push(i + 1)

    item.key = keys.join('-')

    if (item.items) {

      f(item.items, keys)

    }

    keys.pop()

  })

  return datas

}


console.log(f([

      {

        name: 'name',

        label: '人事管理',

        items: [

          {

            name: 'name',

            label: '员工管理',

            items: [

              {

                name: 'name',

                label: '员工管理-0',

                items: [

                  {

                    name: 'name',

                    label: '员工管理-0-0',

                    items: '',

                  },

                  {

                    name: 'name',

                    label: '员工管理-0-1',

                    items: '',

                  },

                ],

              },

              {

                name: 'name',

                label: '员工管理-1',

                items: '',

              },

            ],

          },

          {

            name: 'name',

            label: '部门管理',

            items: [

              {

                name: 'name',

                label: '部门管理1',

                items: '',

              },

              {

                name: 'name',

                label: '部门管理2',

                items: '',

              },

            ],

          },

          {

            name: 'name',

            label: '职位管理',

            items: [

              {

                name: 'name',

                label: '职位管理1',

                items: '',

              },

              {

                name: 'name',

                label: '职位管理2',

                items: '',

              },

            ],

          },

        ],

      },

    ], []))


查看完整回答
反对 回复 2019-04-03
  • 1 回答
  • 0 关注
  • 1067 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信