在每个项目上循环遍历JS对象和函数

时间:2018-06-26 06:57:09

标签: javascript function ecmascript-6

我必须考虑这个问题的解决方案,但似乎无法正确解决问题。

我有一个像这样的数组object

[ 
  {  ItemID: 1,  Path: '/Admin',     Name: 'Admin'   },
  {  ItemID: 2,  Path: '/Product',   Name: 'Product' },
  {  ItemID: 1,  Path: '/Reports',   Name: 'Reports' } 
]

我想映射每个项目,对于每个项目,我需要运行一个函数,该函数将返回它们是否具有访问权限。即布尔值(是/否)。

到目前为止,我有这样的事情:

const newData = data.map((curr, val , arr) => {

    if (checkAccess(username, curr.Name )) {  //checkAccess returns true or false
        return { ...current };
    }
});

我只想返回他们有权访问的内容。

因此,假设用户无法访问Admin,则最终对象应该是:

[ 
  {  ItemID: 2,  Path: '/Product',   Name: 'Product' },
  {  ItemID: 1,  Path: '/Reports',   Name: 'Reports' } 
]

编辑:

问题还在于该函数没有返回true / false

function checkInGroup(username, name) {
    let inGroup = "";
    ad.isUserMemberOf(username, name, function(err, isMember) {
        if (err) {
            return res.json("Error ", err);
        }
        inGroup = isMember; //this part returns true
    });
    return inGroup; //this seems to return empty string
}

1 个答案:

答案 0 :(得分:4)

尝试使用filter,因为它会创建一个包含所有通过条件的元素的新数组:

const res = data.filter(obj => obj.Path !== '/Admin');
console.log(res);