javascript - 如何将嵌套对象数组转换为javascript中的对象?
问题描述
我有一组嵌套的对象数组。我只想从数据中获取权限对象,我需要将数据数组转换为权限对象。
"data":[
{
"Book":[
{
"label":"Can View",
"value":"can_view"
},
{
"label":"Can Create",
"value":"can_create"
},
]
},
{
"Articles":[
{
"label":"Can View",
"value":"can_view"
},
]
},
{
"Journals":[
{
"label":"Can Upload",
"value":"can_upload"
},
{
"label":"Can Download",
"value":"can_download"
}
]
},
{
"Permission":[
{
"label":"Can View",
"value":"can_view"
},
{
"label":"Can Create",
"value":"can_create"
}
]
}
]
我正在尝试从我的数据对象列表中获取权限对象。我正在使用过滤器方法获取权限数组并想要转换权限对象,但我得到了嵌套数组。问题出在哪里?
let dataPer = data.permissions.filter(item=>item.Permission).map(item=>item.Permission)
console.log(dataPer)
我接受的输出是:
let output= {
Permission:{
can_view:"can_view",
can_create:"can_create"
}
}
解决方案
你可以用reduce
函数来做,像这样:
const data = [
{
Book: [
{
label: "Can View",
value: "can_view"
},
{
label: "Can Create",
value: "can_create"
}
]
},
{
Articles: [
{
label: "Can View",
value: "can_view"
}
]
},
{
Journals: [
{
label: "Can Upload",
value: "can_upload"
},
{
label: "Can Download",
value: "can_download"
}
]
},
{
Permission: [
{
label: "Can View",
value: "can_view"
},
{
label: "Can Create",
value: "can_create"
}
]
}
];
--
function getPermissionList() {
const list = data
.filter(item => item.Permission)[0]
.Permission.reduce((list, item) => {
list.push({ [item.label]: item.value });
return list;
}, {});
return Object.assign({}, list);
}
推荐阅读
- java - 有没有办法使用 MapStruct 运行程序而无需每次都进行 Maven 全新安装?
- angular - 一个输入中的两个 ngModel
- sql - 如何在 SQL 中将两个表列组合成一个带有选定列的表
- visual-studio - 如何在 Visual Studio 编辑器中调整左边距?
- smtp - 将电子邮件从 Apache Camel 发送到 Office.365 时出现 SMTP 错误 530 5.7.57
- javascript - 在 Electron 中关闭父窗口时防止子窗口关闭
- unity3d - 如何切片 3D 对象
- javascript - 如何检查 javascript watch 是否正在运行?
- angular - ngbTypeahead - 传递参数
- python - 在 python 中使用 sqlite3 时出错