【发布时间】:2020-03-24 12:28:59
【问题描述】:
我有两个对象数组。我想根据PermissionObj过滤数据。
这是来自数据库。这是permissionObj中的子数组数组。
const PermissionObj = {
permission: [
{
books: [
{
label: "Can View",
value: "can_view"
}
]
},
{
Journals: [
{
label: "Can View",
value: "can_view"
},
{
label: "Can Create",
value: "can_create"
}
]
},
{
deal: [
{
label: "Can update",
value: "can_update"
},
{
label: "Can delete",
value: "can_delete"
}
]
}
]
}
这是静态数据。我想根据PermissionObj比较这个数据。
const data = [
{
label: "books",
value: "can_view"
},
{
label: "deal",
content: [
{
value: "can_update"
},
{
value: "can_delete"
},
{ value: "can_view" }
]
},
{
label: "Articles"
},
{
label: "Journals",
content: [
{
value: "can_create"
},
{
value: "can_view"
},
{
value: "can_delete"
},
{
value: "can_edit"
}
]
}
]
我正在尝试根据PermissionObj 对象数组过滤对象的数据数组。这是我尝试的代码。
const permKeys = PermissionObj.permission.flatMap(item => Object.keys(item));
const filteredData = data.filter(({ label }) => permKeys.includes(label));
console.log(filteredData);
这是我的问题,我遇到的问题是,如果 can_edit、can_delete 与日志中的权限对象不匹配,我不想获得它。在我的权限对象中,期刊中没有can_edit 和can_delete。
我接受的输出将是这种格式:
const data = [
{
label: "books",
value: "can_view"
},
{
label: "deal",
content: [
{
value: "can_update"
},
{
value: "can_delete"
}
]
},
{
label: "Journals",
content: [
{
value: "can_create"
},
{
value: "can_view"
}
]
}
]
【问题讨论】:
标签: javascript arrays node.js reactjs object