我有一个对象和groupKey的权限数组。我想在权限和groupKey之间进行过滤。如果对象的权限数组(属性为空数组[] )数组,则群键(项目、期刊)将被移除。例如,这里有文章和期刊是空的array[]。
let permission = [{
Book: [{
label: "Can View",
value: "can_view"
} ]
},
{
Test: [{
label: "Can View",
value: "can_view"
} ]
}, , {
Articles: []
} ,{
Journals: []
}
]
const groupKey = [
{label: "Book", value: "Book"},
{label: "Test", value: "test"},
{label: "Articles", value: "Articlefull"},
{label: "Journals", value: "Journal"},
]我接受的输出是
let groupKey = [
{label: "Book", value: "Book"},
{label: "Test", value: "test"},
]我正在使用过滤方法,但我没有找到解决办法。
发布于 2020-03-27 12:17:42
我们可以使用reduce方法迭代数组,并检查对象是否包含长度大于0的数组。然后将项目推入结果数组。此外,我们还可以使用地图集合来检查groupKey和O(1)。
const keys = new Map(groupKey.map(l => [l.label, l]));
const result = permission.reduce((a, c) => {
for (let key in c) {
if (keys.has(key) && c[key].length > 0) {
a.push(keys.get(key));
}
}
return a;
}, []);
console.log(result);举个例子:
let permission = [{
Book: [{ label: "Can View", value: "can_view"
}]
},
{
Test: [{ label: "Can View", value: "can_view"
}]
}, , {
Articles: []
}, {
Journals: []
}
]
const groupKey = [
{ label: "Book", value: "Book" },
{ label: "Test", value: "test" },
{ label: "Articles", value: "Articlefull" },
{ label: "Journals", value: "Journal" },
]
const keys = new Map(groupKey.map(l => [l.label, l]));
const result = permission.reduce((a, c) => {
for (let key in c) {
if (keys.has(key) && c[key].length > 0) {
a.push(keys.get(key));
}
}
return a;
}, []);
console.log(result);
https://stackoverflow.com/questions/60884567
复制相似问题