【问题标题】:Need to change this object into this array of objects in VueJSVueJS中需要把这个对象改成这个对象数组
【发布时间】:2021-02-16 05:53:52
【问题描述】:

我已经在端点中获得了这些数据,我需要对其进行更改,以便它可以在我目前正在处理的菜单中工作,但一切都搞砸了。伙计们,我真的可以在这里使用一些帮助

这是原版

{
  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 等,但我没有接近解决方案

【问题讨论】:

标签: javascript arrays json vue.js object


【解决方案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;
}

如果你传入主数组,这将起作用

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多