#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;
}
Это сработает, если вы передадите основной массив