Необходимо преобразовать этот объект в этот массив объектов в VueJS

#javascript #arrays #json #vue.js #object

#javascript #массивы #json #vue.js #объект

Вопрос:

Мне были предоставлены эти данные в конечной точке, и мне нужно изменить их, чтобы они могли работать в меню, над которым я сейчас работаю, но все перепутано. Мне действительно нужна помощь, ребята

Это исходный

 {
  SubMenu: {
    Main: [
      {
        Main: "Database",
        SubMenu: {
          Name: "Manage",
          Path: "databaseManage",
          icon: "mdi-database",
          innerMenu: "false",
        },
      },
      {
        Main: "Database",
        SubMenu: {
          Name: "Request to Remove",
          Path: "requestToRemove",
          icon: "mdi-database",
          innerMenu: "false",
        },
      },
      {
        Main: "Account",
        SubMenu: {
          Name: "Audit",
          Path: "audit",
          icon: "mdi-account",
          innerMenu: "false",
        },
      },
      {
        Main: "Account",
        SubMenu: {
          Name: "Manage",
          Path: "accountManage",
          icon: "mdi-account",
          innerMenu: "false",
        },
      },
      {
        Main: "Assistance",
        SubMenu: {
          Name: "Requests",
          Path: "requests",
          icon: "mdi-account-question",
          innerMenu: "false",
        },
      },
      {
        Main: "Admin",
        SubMenu: {
          Name: "Delegates",
          Path: "delegates",
          icon: "mdi-clipboard-list",
          innerMenu: "false",
        },
      },
      {
        Main: "Insights",
        SubMenu: {
          Name: "Charts",
          Path: "charts",
          icon: "mdi-lightbulb-on",
          innerMenu: "false",
        },
      },
      {
        Main: "Insights",
        SubMenu: {
          Name: "Reports",
          Path: "reports",
          icon: "mdi-lightbulb-on",
          innerMenu: "false",
        },
      },
      {
        Main: "DBA Admin",
        SubMenu: {
          Name: "Assignemets",
          Path: "dbaAdmin",
          icon: "mdi-face-recognition",
          innerMenu: "false",
        },
      },
      {
        Main: "DBA Admin",
        SubMenu: {
          Name: "DBA Management",
          Path: "dbaManagement",
          icon: "mdi-face-recognition",
          innerMenu: "false",
        },
      },
    ],
  },
},
  

и вот как это должно быть:

 [
  {
    main: "Databases",
    submenu: [
      {
        name: "Manage",
        path: "databaseManage",
        icon: "mdi-database",
        innerMenu: false,
      },
      {
        name: "Request to remove",
        path: "requestToRemove",
        icon: "mdi-database",
        innerMenu: false,
      },
      {
        name: "Advisor",
        path: "advisorView",
        icon: "mdi-database",
        innerMenu: false,
      },
    ],
  },
  {
    main: "Accounts",
    submenu: [
      {
        name: "Manage",
        path: "accountManage",
        icon: "mdi-account",
        innerMenu: false,
      },
      {
        name: "Audit",
        path: "audit",
        icon: "mdi-account",
        innerMenu: false,
      },
    ],
  },
  {
    main: "Assistance",
    submenu: [
      {
        name: "Requests",
        path: "requests",
        icon: "mdi-account-question",
        innerMenu: false,
      },
    ],
  },
  {
    main: "Admin",
    submenu: [
      {
        name: "Delegates",
        path: "delegates",
        icon: "mdi-clipboard-list",
        innerMenu: false,
      },
    ],
  },
  {
    main: "Insights",
    submenu: [
      {
        name: "Charts",
        path: "charts",
        icon: "mdi-lightbulb-on",
        innerMenu: false,
      },
      {
        name: "Reports",
        path: "reports",
        icon: "mdi-lightbulb-on",
        innerMenu: false,
      },
      {
        name: "Volume Reduction Tracker",
        path: "volumeReductionTracker",
        icon: "mdi-lightbulb-on",
        innerMenu: false,
      },
    ],
  },
  {
    main: "DBA Admin",
    submenu: [
      {
        name: "Assignments",
        path: "dbaAdmin",
        icon: "mdi-face-recognition",
        innerMenu: false,
      },
      {
        name: "DBA Management",
        path: "dbaManagement",
        icon: "mdi-face-recognition",
        innerMenu: false,
      },
      {
        name: "Reporting Tool",
        path: "reportingTool",
        icon: "mdi-face-recognition",
        innerMenu: false,
      },
    ],
  },
  {
    main: "Honk admin",
    submenu: [
      { name: "Roles", path: "roles", icon: "mdi-duck", innerMenu: false },
      { name: "Users", path: "users", icon: "mdi-duck", innerMenu: false },
      {
        name: "Logs",
        icon: "mdi-duck",
        innerMenu: [
          { name: "Honk Administrative", path: "logAdministrative" },
          { name: "SNow to Athena - Dev", path: "serviceNowDev" },
          { name: "SNow to Athena - Prod", path: "serviceNowProd" },
        ],
      },
    ],
  

любая помощь? Я пытался использовать вычисляемые свойства, также пытался выполнять Object.keys, values и т. Д., И я не приблизился к решению

Комментарии:

1. Вы можете использовать библиотеку Lodash.camelCase для преобразования ключей в camelCase lodash.com/docs/4.17.15#camelCase

Ответ №1:

У меня есть функция, которая туда попадает.

 function shuffle(arr) {
var a = [];
for (let i = 0; i < arr.length; i  ) {
    if (a.some(o => o["main"] === arr[i]["Main"])) {
        let idx = a.findIndex(x => {
            return x['main'] == arr[i].Main;
        });
        let copy = arr[i].SubMenu;
        a[idx].submenu.push(copy)
    } else {
        let copy = arr[i]["SubMenu"]
        let obj = {
            main: arr[i]["Main"],
            submenu: [copy]
        }
        a.push(obj);
    }
}
return a;
}
  

Это сработает, если вы передадите основной массив