js 数组对象,根据对象中某个字段相同的值,进行跟对象的id相匹配,匹配成功,行程新的数组对象

新手上路,请多包涵

var arr = [

    {
      'id': 1,
      'name': '张三1',
      'action': '路径地址',
      'type': 1,
      'parentId': 0,
      'icon': 'icon图标'
    },
    {
      'id': 2,
      'name': '张三2',
      'action': '路径地址',
      'type': 1,
      'parentId': 0,
      'icon': 'icon图标'
    },
    {
      'id': 3,
      'name': '张三3',
      'action': '路径地址',
      'type': 2,
      'parentId': 1,
      'icon': 'icon图标'
    },
    {
      'id': 4,
      'name': '张三3',
      'action': '路径地址',
      'type': 2,
      'parentId': 2,
      'icon': 'icon图标'
    }
  ]

原始数据,渲染成2级菜单,type为菜单的级别,1为一级,2为2级
parentId为关联的字段,比如 0为没有关联,1为 跟id为1 的进行匹配 ,依次类推

想要的数据格式为

[
    {
      'id': 1,
      'name': '张三1',
      'action': '路径地址',
      'type': 1,
      'parentId': 0,
      'icon': 'icon图标',
      'data':[
         {
          'id': 3,
          'name': '张三3',
          'action': '路径地址',
          'type': 2,
          'parentId': 1,
          'icon': 'icon图标'
        }
      ]
    },
    {
      'id': 2,
      'name': '张三2',
      'action': '路径地址',
      'type': 1,
      'parentId': 0,
      'icon': 'icon图标',
      'data':[
        {
          'id': 4,
          'name': '张三4',
          'action': '路径地址',
          'type': 2,
          'parentId': 2,
          'icon': 'icon图标'
        },
        {
          'id': 5,
          'name': '张三5',
          'action': '路径地址',
          'type': 2,
          'parentId': 2,
          'icon': 'icon图标'
        }
        //...
      ]
    }
  ]
  

请助各位大佬~谢谢###

阅读 7.4k
1 个回答

你这个确定只有两层的话,一个简单的遍历就ok了啊。
为了加快运行速度,你可以先把arr数组转成object,key就用id

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题