首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查javascript中的对象数组和另一个对象数组之间的空数组

如何检查javascript中的对象数组和另一个对象数组之间的空数组
EN

Stack Overflow用户
提问于 2020-03-27 10:54:51
回答 4查看 84关注 0票数 1

我有一个对象和groupKey的权限数组。我想在权限和groupKey之间进行过滤。如果对象的权限数组(属性为空数组[] )数组,则群键(项目、期刊)将被移除。例如,这里有文章和期刊是空的array[]。

代码语言:javascript
复制
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"},
]

我接受的输出是

代码语言:javascript
复制
 let groupKey = [    
     {label: "Book", value: "Book"},
     {label: "Test", value: "test"},
    ]

我正在使用过滤方法,但我没有找到解决办法。

EN

Stack Overflow用户

发布于 2020-03-27 12:17:42

我们可以使用reduce方法迭代数组,并检查对象是否包含长度大于0的数组。然后将项目推入结果数组。此外,我们还可以使用地图集合来检查groupKey和O(1)

代码语言:javascript
复制
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);

举个例子:

代码语言:javascript
复制
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);

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60884567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档