javascript - 如何根据嵌套数组 4 级深度过滤数组?
问题描述
我有一个这样的对象:
let accessArray = [{
id: 1,
restrictions: [{
canAccess: true,
users: [{
name: 'user',
accessLevel: [10, 20, 30]
}]
}]
},
{
id: 2,
restrictions: [{
canAccess: true,
users: [{
name: 'user2',
accessLevel: [10, 20]
}]
}]
}
]
我想知道如何过滤以仅获取accessArray
包含accessLevel
30的项目,在示例中是带有id = 1
.Thanks 的项目。
解决方案
你可以写一个嵌套的some
:
const accessArray = [{id:1,restrictions:[{canAccess:true,users:[{name:'user',accessLevel:[10,20,30]}]}]},{id:2,restrictions:[{canAccess:true,users:[{name:'user2',accessLevel:[10,20]}]}]}]
const level = 30;
function getAccess(level) {
return accessArray.filter(a =>
a.restrictions.some(b =>
b.users.some(c => c.accessLevel.includes(level))))
}
console.log(getAccess(30))
(这假设嵌套数组至少为空[]
,并且它们都不是null
or undefined
)
推荐阅读
- java - 用于查找具有随机中心的特定字符串的正则表达式
- arrays - 修改列表元素中的固定大小数组
- javascript - 如何调整gojs按钮的大小
- python - 在 pdf 图表上叠加点
- c - 我的delete函数删除了struct的错误记录
- python - Python - 导入在基础环境中有效,但在 conda 虚拟环境中无效?
- php - 在 Woocommerce 3 中获取用户地理定位的国家/地区名称
- javascript - Javascript打字机无限循环
- android - Android:系统启动的进程死亡是什么意思?
- python - 无法在 Python 中的 Pulp 上运行 CPLEX