首页 > 解决方案 > 如何遍历数组并在对象中获取输出

问题描述

我正在从我的数据库中获取数据并且我想根据需要循环

我正在从我的数据库中获取对象数组,我想将其转换为具有一些更改的对象

我的资料

 Data=   [
  {
    "Menu": "Menu1",
    "SubMenu": "dash",
    "PATH": "Path1"
  },
  {
    "Menu": "Menu2",
    "SubMenu": "SubMenu1",
    "PATH": "path2"
  },
  {
    "menu": "menu2",
    "SubMenu": "SubMenu2",
    "PATH": "path3"
  },
  {
    "Menu": "menu2",
    "Submenu": "SubMenu3",
    "PATH": "Path4"
  }
]

我想将其转换为如下所示-:

    {
  "menu1": [
    {
      "SubMenu": "dash",
      "PATH": "path1"
    }
  ],
  "menu2": [
    {
      "SubMenu": "subMenu1",
      "PATH": "Path2"
    },
    {
      "SubMenu": "Submenu2",
      "PATH": "Path3"
    },
    {
      "type": "SubMenu3",
      "link": "Path4"
    }
  ]
}




const newArray= Data.map(element => element.Menu);
console.log(newArray);

标签: javascriptnode.js

解决方案


您可以使用Array.reduce()

var Data = [{
    "Menu": "Menu1",
    "SubMenu": "dash",
    "PATH": "Path1"
  },
  {
    "Menu": "Menu2",
    "SubMenu": "SubMenu1",
    "PATH": "path2"
  },
  {
    "Menu": "Menu2",
    "SubMenu": "SubMenu2",
    "PATH": "path3"
  },
  {
    "Menu": "Menu2",
    "SubMenu": "SubMenu3",
    "PATH": "Path4"
  }
];

var res = Data.reduce((acc, item) => {
  var accObj = {
    Submenu: item.SubMenu,
    PATH: item.PATH
  };
  if(acc[item.Menu]) {
    acc[item.Menu].push(accObj);
  } else {
    acc[item.Menu] = [accObj];
  }
  return acc;
}, {});

console.log(res);


推荐阅读