javascript - 过滤一个 JavaScript 对象数组 另一个 JavaScript 对象数组
问题描述
我有以下组成的 JavaScript 对象数组:
const permissions = [
{
moduleEnabled: true,
moduleId: 1,
moduleName: 'Directory'
},
{
moduleEnabled: true,
moduleId: 2,
moduleName: 'Time off'
},
{
moduleEnabled: false,
moduleId: 3,
moduleName: 'Tasks'
},
{
moduleEnabled: false,
moduleId: 4,
moduleName: 'Documents'
}
]
我还有以下基于可显示的小部件集合的对象数组:
const widgets = [
{
id: 1,
moduleId: 2,
title: 'Your time off'
},
{
id: 2,
moduleId: 1,
title: 'Your colleagues'
},
{
id: 3,
moduleId: 3,
title: 'Your tasks'
},
{
id: 4,
moduleId: 5,
title: 'Your sales pipeline'
},
{
id: 5,
moduleId: 4,
title: 'Your documents'
},
{
id: 6,
moduleId: 6,
title: 'Your legal cases'
}
]
我想做的是根据对象数组中的值将对象数组减少widgets
为新的对象数组,这些值是是否找到,以及在哪里。filteredWidgets
permissions
moduleId
moduleEnabled
true
我已经尝试了下面的代码,但它不起作用:
const filteredWidgets = []
for (const permission in permissions) {
const found = widgets.filter((item) => item.moduleId === permission.moduleId && permission.moduleEnabled)
if (found) {
filteredWidgets.push(found)
}
}
console.log('filteredWidgets\n', filteredWidgets)
任何帮助将不胜感激。提前致谢。
编辑:包括预期输出:
const filteredWidgets = [
{
id: 1,
moduleId: 2,
title: 'Your time off'
},
{
id: 2,
moduleId: 1,
title: 'Your colleagues'
}
]
解决方案
在您的过滤器功能中,检查与给定条件匹配的任何权限:
const filteredWidgets = widgets.filter(widget =>
permissions.find(permission =>
(permission.moduleId === widget.moduleId) && permission.moduleEnabled));
推荐阅读
- sql - Oracle 平均查询
- php - 谷歌云空间/图像部署错误,构建未完成
- elasticsearch - 从日志消息中提取子字符串 (GROK)
- html - 如何从页面底部删除空格?
- php - Foreach 数据在变量内部不起作用
- python - 去抖动 ipywidgets IntSlider 时绘制错误
- javascript - 每次开始练习时,如何阻止脚本随机播放单词(问题)?
- python - 如何解决此错误: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::contourArea'
- php - 如何以“必需”作为她的值来获取所有变量?在获取 cURL PHP
- javascript - 将 JavaScript setTimeout 与 AJAX