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

工作中需要用到一个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的数据...


RISEBY
浏览 1068回答 1
1回答

拉风的咖菲猫

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: '',              },            ],          },        ],      },    ], []))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript