我如何在数组另一个对象的键内获取数组的输出对象

发布于 2025-02-09 21:02:00 字数 3674 浏览 2 评论 0原文

所以我有一系列对象:

[
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM001',
    SubMenuName: 'Personal Information',
    SubMenuImage: 'BsPerson',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM002',
    SubMenuName: 'Work',
    SubMenuImage: 'FcWorkflow',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM005',
    SubMenuName: 'Document',
    SubMenuImage: 'GrDocumentText',
    SubMenuOrderno: '5',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM006',
    SubMenuName: 'Leave Log',
    SubMenuImage: 'MdOutlineHolidayVillage',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM007',
    SubMenuName: 'Automation Log',
    SubMenuImage: 'TbSettingsAutomation',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM008',
    SubMenuName: 'Rules',
    SubMenuImage: 'MdRule',
    SubMenuOrderno: '3',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  }
]

但是我想要它:

[
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    submenus : 
    [{
    SubMenuId: 'SM001',
    SubMenuName: 'Personal Information',
    SubMenuImage: 'BsPerson',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM002',
    SubMenuName: 'Work',
    SubMenuImage: 'FcWorkflow',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    }]
  },
    {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    submenus : 
    [{
    SubMenuId: 'SM006',
    SubMenuName: 'Leave Log',
    SubMenuImage: 'MdOutlineHolidayVillage',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM007',
    SubMenuName: 'Automation Log',
    SubMenuImage: 'TbSettingsAutomation',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM008',
    SubMenuName: 'Rules',
    SubMenuImage: 'MdRule',
    SubMenuOrderno: '3',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM009',
    SubMenuName: 'Assets Request',
    SubMenuImage: 'MdWebAsset',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    }]
  }
]

so I have an Arrray of objects :

[
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM001',
    SubMenuName: 'Personal Information',
    SubMenuImage: 'BsPerson',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM002',
    SubMenuName: 'Work',
    SubMenuImage: 'FcWorkflow',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM005',
    SubMenuName: 'Document',
    SubMenuImage: 'GrDocumentText',
    SubMenuOrderno: '5',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM006',
    SubMenuName: 'Leave Log',
    SubMenuImage: 'MdOutlineHolidayVillage',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM007',
    SubMenuName: 'Automation Log',
    SubMenuImage: 'TbSettingsAutomation',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  },
  {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM008',
    SubMenuName: 'Rules',
    SubMenuImage: 'MdRule',
    SubMenuOrderno: '3',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
  }
]

but I want it like :

[
  {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    submenus : 
    [{
    SubMenuId: 'SM001',
    SubMenuName: 'Personal Information',
    SubMenuImage: 'BsPerson',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM002',
    SubMenuName: 'Work',
    SubMenuImage: 'FcWorkflow',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    }]
  },
    {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    submenus : 
    [{
    SubMenuId: 'SM006',
    SubMenuName: 'Leave Log',
    SubMenuImage: 'MdOutlineHolidayVillage',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM007',
    SubMenuName: 'Automation Log',
    SubMenuImage: 'TbSettingsAutomation',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM008',
    SubMenuName: 'Rules',
    SubMenuImage: 'MdRule',
    SubMenuOrderno: '3',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    },
    {
    SubMenuId: 'SM009',
    SubMenuName: 'Assets Request',
    SubMenuImage: 'MdWebAsset',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
    }]
  }
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

北凤男飞 2025-02-16 21:02:00

您可以做到这一点,下面是一种方法。

function mergeSubmenus(arr) {
  return Object.values(arr.reduce((acc, {MenuId, MenuName, MenuImage, Orderno, ...rest}) => {
    const obj = acc[MenuId] ?? { MenuId, MenuName, MenuImage, Orderno, submenus: [] };
    obj.submenus.push(rest)
    
    acc[MenuId] = obj;
    return acc;
  }, {}));
}

There's endless ways you can do this, below is one approach.

function mergeSubmenus(arr) {
  return Object.values(arr.reduce((acc, {MenuId, MenuName, MenuImage, Orderno, ...rest}) => {
    const obj = acc[MenuId] ?? { MenuId, MenuName, MenuImage, Orderno, submenus: [] };
    obj.submenus.push(rest)
    
    acc[MenuId] = obj;
    return acc;
  }, {}));
}
屋檐 2025-02-16 21:02:00

您可以使用函数array.prototype.reduce进行分组,然后使用函数object.values来提取分组对象。

const arr = [  {    MenuId: 'GM002',    MenuName: 'Profile',    MenuImage: 'CgProfile',    Orderno: '2',    SubMenuId: 'SM001',    SubMenuName: 'Personal Information',    SubMenuImage: 'BsPerson',    SubMenuOrderno: '1',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM002',    MenuName: 'Profile',    MenuImage: 'CgProfile',    Orderno: '2',    SubMenuId: 'SM002',    SubMenuName: 'Work',    SubMenuImage: 'FcWorkflow',    SubMenuOrderno: '2',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM002',    MenuName: 'Profile',    MenuImage: 'CgProfile',    Orderno: '2',    SubMenuId: 'SM005',    SubMenuName: 'Document',    SubMenuImage: 'GrDocumentText',    SubMenuOrderno: '5',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM003',    MenuName: 'Leave Request',    MenuImage: 'FcLeave',    Orderno: '3',    SubMenuId: 'SM006',    SubMenuName: 'Leave Log',    SubMenuImage: 'MdOutlineHolidayVillage',    SubMenuOrderno: '1',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM003',    MenuName: 'Leave Request',    MenuImage: 'FcLeave',    Orderno: '3',    SubMenuId: 'SM007',    SubMenuName: 'Automation Log',    SubMenuImage: 'TbSettingsAutomation',    SubMenuOrderno: '2',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM003',    MenuName: 'Leave Request',    MenuImage: 'FcLeave',    Orderno: '3',    SubMenuId: 'SM008',    SubMenuName: 'Rules',    SubMenuImage: 'MdRule',    SubMenuOrderno: '3',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  }],
      result = Object.values(arr.reduce((a, {MenuId, MenuName, MenuImage, Orderno, ...submenus}) => {
        (a[MenuId] ?? (a[MenuId] = {MenuId, MenuName, MenuImage, Orderno, submenus: []})).submenus.push(submenus);
        return a;
      }, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

You can use the function Array.prototype.reduce for grouping the objects and then use the function Object.values for extracting the grouped objects.

const arr = [  {    MenuId: 'GM002',    MenuName: 'Profile',    MenuImage: 'CgProfile',    Orderno: '2',    SubMenuId: 'SM001',    SubMenuName: 'Personal Information',    SubMenuImage: 'BsPerson',    SubMenuOrderno: '1',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM002',    MenuName: 'Profile',    MenuImage: 'CgProfile',    Orderno: '2',    SubMenuId: 'SM002',    SubMenuName: 'Work',    SubMenuImage: 'FcWorkflow',    SubMenuOrderno: '2',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM002',    MenuName: 'Profile',    MenuImage: 'CgProfile',    Orderno: '2',    SubMenuId: 'SM005',    SubMenuName: 'Document',    SubMenuImage: 'GrDocumentText',    SubMenuOrderno: '5',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM003',    MenuName: 'Leave Request',    MenuImage: 'FcLeave',    Orderno: '3',    SubMenuId: 'SM006',    SubMenuName: 'Leave Log',    SubMenuImage: 'MdOutlineHolidayVillage',    SubMenuOrderno: '1',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM003',    MenuName: 'Leave Request',    MenuImage: 'FcLeave',    Orderno: '3',    SubMenuId: 'SM007',    SubMenuName: 'Automation Log',    SubMenuImage: 'TbSettingsAutomation',    SubMenuOrderno: '2',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  },  {    MenuId: 'GM003',    MenuName: 'Leave Request',    MenuImage: 'FcLeave',    Orderno: '3',    SubMenuId: 'SM008',    SubMenuName: 'Rules',    SubMenuImage: 'MdRule',    SubMenuOrderno: '3',    SubSubMenuId: null,    SubSubMenuName: null,    SubSubMenuImage: null,    SubSubMenuOrderno: null  }],
      result = Object.values(arr.reduce((a, {MenuId, MenuName, MenuImage, Orderno, ...submenus}) => {
        (a[MenuId] ?? (a[MenuId] = {MenuId, MenuName, MenuImage, Orderno, submenus: []})).submenus.push(submenus);
        return a;
      }, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

五里雾 2025-02-16 21:02:00
const data = [{
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM001',
    SubMenuName: 'Personal Information',
    SubMenuImage: 'BsPerson',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM002',
    SubMenuName: 'Work',
    SubMenuImage: 'FcWorkflow',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM005',
    SubMenuName: 'Document',
    SubMenuImage: 'GrDocumentText',
    SubMenuOrderno: '5',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM006',
    SubMenuName: 'Leave Log',
    SubMenuImage: 'MdOutlineHolidayVillage',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM007',
    SubMenuName: 'Automation Log',
    SubMenuImage: 'TbSettingsAutomation',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM008',
    SubMenuName: 'Rules',
    SubMenuImage: 'MdRule',
    SubMenuOrderno: '3',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}]


const result = data.reduce((acc, item) => {
  const itemInAcc = acc.find(accItem => accItem.MenuId === item.MenuId)
  // the item already exist.
  if (itemInAcc) {
    itemInAcc.submenus.push({
        SubMenuId: item.SubMenuId,
        SubMenuName: item.SubMenuName,
        SubMenuImage: item.SubMenuImage,
        SubMenuOrderno: item.SubMenuOrderno,
        SubSubMenuId: item.SubSubMenuId,
        SubSubMenuName: item.SubSubMenuName,
        SubSubMenuImage: item.SubSubMenuImage,
        SubSubMenuOrderno: item.SubSubMenuOrderno
    })
  } else {
   const pushedItem = {
    MenuId: item.MenuId,
    MenuName: item.MenuName,
    MenuImage: item.MenuImage,
    Orderno: item.Orderno,
    submenus: [{
        SubMenuId: item.SubMenuId,
        SubMenuName: item.SubMenuName,
        SubMenuImage: item.SubMenuImage,
        SubMenuOrderno: item.SubMenuOrderno,
        SubSubMenuId: item.SubSubMenuId,
        SubSubMenuName: item.SubSubMenuName,
        SubSubMenuImage: item.SubSubMenuImage,
        SubSubMenuOrderno: item.SubSubMenuOrderno
    }]
   }
   acc.push(pushedItem)
  }
  return acc
}, [])

console.log(result)

const data = [{
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM001',
    SubMenuName: 'Personal Information',
    SubMenuImage: 'BsPerson',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM002',
    SubMenuName: 'Work',
    SubMenuImage: 'FcWorkflow',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM002',
    MenuName: 'Profile',
    MenuImage: 'CgProfile',
    Orderno: '2',
    SubMenuId: 'SM005',
    SubMenuName: 'Document',
    SubMenuImage: 'GrDocumentText',
    SubMenuOrderno: '5',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM006',
    SubMenuName: 'Leave Log',
    SubMenuImage: 'MdOutlineHolidayVillage',
    SubMenuOrderno: '1',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM007',
    SubMenuName: 'Automation Log',
    SubMenuImage: 'TbSettingsAutomation',
    SubMenuOrderno: '2',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}, {
    MenuId: 'GM003',
    MenuName: 'Leave Request',
    MenuImage: 'FcLeave',
    Orderno: '3',
    SubMenuId: 'SM008',
    SubMenuName: 'Rules',
    SubMenuImage: 'MdRule',
    SubMenuOrderno: '3',
    SubSubMenuId: null,
    SubSubMenuName: null,
    SubSubMenuImage: null,
    SubSubMenuOrderno: null
}]


const result = data.reduce((acc, item) => {
  const itemInAcc = acc.find(accItem => accItem.MenuId === item.MenuId)
  // the item already exist.
  if (itemInAcc) {
    itemInAcc.submenus.push({
        SubMenuId: item.SubMenuId,
        SubMenuName: item.SubMenuName,
        SubMenuImage: item.SubMenuImage,
        SubMenuOrderno: item.SubMenuOrderno,
        SubSubMenuId: item.SubSubMenuId,
        SubSubMenuName: item.SubSubMenuName,
        SubSubMenuImage: item.SubSubMenuImage,
        SubSubMenuOrderno: item.SubSubMenuOrderno
    })
  } else {
   const pushedItem = {
    MenuId: item.MenuId,
    MenuName: item.MenuName,
    MenuImage: item.MenuImage,
    Orderno: item.Orderno,
    submenus: [{
        SubMenuId: item.SubMenuId,
        SubMenuName: item.SubMenuName,
        SubMenuImage: item.SubMenuImage,
        SubMenuOrderno: item.SubMenuOrderno,
        SubSubMenuId: item.SubSubMenuId,
        SubSubMenuName: item.SubSubMenuName,
        SubSubMenuImage: item.SubSubMenuImage,
        SubSubMenuOrderno: item.SubSubMenuOrderno
    }]
   }
   acc.push(pushedItem)
  }
  return acc
}, [])

console.log(result)

如果您使用的是库下划线,则可以执行类似的操作(为了示例而删除属性),

_.map(_.groupBy(arr, x => x.MenuId), item => item)
.map(x => {
    return {
        'MenuId': x[0].MenuId,
        'MenuName': x[0].MenuName,
        'SubMenu': x.map(y => {
            return {
                'SubMenuId': y.SubMenuId,
                'SubMenuName': y.SubMenuName
            }
        })
    }
});

如果不是,则可以为Groupby创建一个polyfill。

我发现这是一个受欢迎的人,尽管它可能有点复杂。

If you're using the library underscore you could do something like this (removed properties for sake of example)

_.map(_.groupBy(arr, x => x.MenuId), item => item)
.map(x => {
    return {
        'MenuId': x[0].MenuId,
        'MenuName': x[0].MenuName,
        'SubMenu': x.map(y => {
            return {
                'SubMenuId': y.SubMenuId,
                'SubMenuName': y.SubMenuName
            }
        })
    }
});

If not, you can just create a polyfill for groupBy.

Here's a popular one I found, though it could be a bit complex to understand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文