首页 > 解决方案 > 如何根据嵌套数组 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 的项目。

标签: javascript

解决方案


你可以写一个嵌套的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))

(这假设嵌套数组至少为空[],并且它们都不是nullor undefined


推荐阅读