javascript - 如何遍历数组并在对象中获取输出
问题描述
我正在从我的数据库中获取数据并且我想根据需要循环
我正在从我的数据库中获取对象数组,我想将其转换为具有一些更改的对象
我的资料
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);
解决方案
您可以使用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);
推荐阅读
- android - bundleRelease 失败并显示“Task :app:collectReleaseDependencies FAILED”
- c# - 无法使用 C# 在 Windows 中覆盖超过 104KB 的 MBR
- python - 如何有效地计算列表中元素的非连续出现次数?
- python - 如何编写 xpath 表达式?
- r - R:将年月数据框转换为时间序列
- oracle - PL/SQL 块问题
- docker - 如何使用 traefik 将 http 重定向到 https?
- r - 在 Shiny 中隐藏一列
- css - 分裂
- 如果分成两列
- 使用纯 CSS 大于 5
- google-apps-script - 如何解决此错误“异常:无效参数:替换”?