比较数组中的JavaScript对象时出现问题

比较数组中的JavaScript对象时出现问题,javascript,arrays,Javascript,Arrays,我有这两组信息。我想解决这个问题:(给定用户名和所需权限,如果 用户拥有该权限,否则为false。) 到目前为止,我编写的代码是: function userHasPermission(userName, requiredPermission) { //looping through first array for (i = 0; i < users.length; i++) { if (users[i].name === userName) { // l

我有这两组信息。我想解决这个问题:(给定用户名和所需权限,如果 用户拥有该权限,否则为false。)

到目前为止,我编写的代码是:

function userHasPermission(userName, requiredPermission) {
  //looping through first array
  for (i = 0; i < users.length; i++) {

    if (users[i].name === userName) {
        // looping through the second array
        for (j = 0; j < groups.length; j++) {

            //here I don't know how to resolve this comparison, because as far as I understand it, the script has to check if userName is a valid ID inside groups array?
            if (users[i].groups.includes(groups[j].id) && (groups[j].permissions.includes(requiredPermission))) {
                return true;
            } else {
                return false;
            }
        }
    }
  }  
  
};

  userHasPermission("mary", "WRITE");
函数userHasPermission(用户名,requiredPermission){
//循环通过第一个数组
对于(i=0;i
我对香草JavaScript还不熟悉,我被困在这一点上,任何帮助都将不胜感激

函数userHasPermission(用户名,requiredPermission){
//循环通过第一个数组
对于(i=0;i
以上是基于代码的循环样式所必需的。我个人更喜欢函数式代码风格。供参考:

函数userHasPermission(用户名,requiredPermission){
const targetUser=users.find(user=>user.name==userName);
如果(!targetUser)返回false;
const userGroups=groups.filter(g=>targetUser.groups.includes(g.id));
const permissions=userGroups.flatMap(g=>g.permissions);
返回权限。包括(requiredPermission);
}

您也可以发布输出吗?脱离主题,但我无法帮助添加,组对象的
权限
字段不必是字符串数组。如果您可以控制代码,请尝试查看
function userHasPermission(userName, requiredPermission) {
  //looping through first array
  for (i = 0; i < users.length; i++) {

    if (users[i].name === userName) {
        // looping through the second array
        for (j = 0; j < groups.length; j++) {

            //here I don't know how to resolve this comparison, because as far as I understand it, the script has to check if userName is a valid ID inside groups array?
            if (users[i].groups.includes(groups[j].id) && (groups[j].permissions.includes(requiredPermission))) {
                return true;
            } else {
                return false;
            }
        }
    }
  }  
  
};

  userHasPermission("mary", "WRITE");
function userHasPermission(userName, requiredPermission) {
     const user = users.find(u => u.name === userName);
     let result = false;

     user.groups.forEach(id => {
        const group = groups.find(g => g.id === id);
        result = group.permissions.includes(requiredPermission);
     });

     return result;
};

userHasPermission("mary", "WRITE");