Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript数组比较函数_Javascript_Arrays_Function_Comparison - Fatal编程技术网

JavaScript数组比较函数

JavaScript数组比较函数,javascript,arrays,function,comparison,Javascript,Arrays,Function,Comparison,我目前有一个用户数组的映射,所有用户都有一个唯一的\u id键/值 user=[{u-id:“1”,…},{u-id:“2”,…},…},…] 我还有另外两个数组,一个名为teams,另一个名为accounts teams=[{u-id:“1”,成员:[{userId:“2”},{userId:“4”},…}] accounts=[{u id:“1”,authorizedUsers:[{userId:“3”},…],ownerTeamId:“2”},…] 尝试创建两个比较函数,该函数采用user

我目前有一个用户数组的
映射
,所有用户都有一个唯一的
\u id
键/值

user=[{u-id:“1”,…},{u-id:“2”,…},…},…]

我还有另外两个数组,一个名为
teams
,另一个名为
accounts

teams=[{u-id:“1”,成员:[{userId:“2”},{userId:“4”},…}]

accounts=[{u id:“1”,authorizedUsers:[{userId:“3”},…],ownerTeamId:“2”},…]


尝试创建两个比较函数,该函数采用
user
参数,并为相应的
用户
输出
numberOfTeams
numberOfAccounts

我尝试了下面的
numberOfTeams
,但我不确定这是否是最理想的

numberOfTeams(user) {
  let count = 0;
  teams.forEach(team => {
    team.members.forEach(member => {
      if (member.userId === user._id) {
        count++
      }
    })
  });
  return count;
}

对于
numberOfAccounts
,我被困在如何比较
authorizedUsers===user.\u id
ownerTeamId===team.\u id
其中还有
members.userId==user.id
,然后
count++
编写一个函数来获取用户所属的团队可能是一个好的开始:

function containsUserId(users, id) {
    return users.some(user => user.userId === id);
}

function getUserTeams(user, teams) {
    return teams.filter(team =>
        containsUserId(team.members, user._id));
}
因为这样您就可以使用它编写
numberOfTeams

numberOfTeams(user) {
    return getUserTeams(user, teams).length;
}
numberOfAccounts(user) {
    return getUserAccounts(user, accounts).length;
}
然后使用类似的函数获取帐户:

function getUserAccounts(user, accounts) {
    const userTeamIds = new Set(
        getUserTeams(user).map(team => team._id)
    );

    return accounts.filter(account =>
        containsUserId(account.authorizedUsers, user._id) ||
        userTeamIds.has(accounts.ownerTeamId));
}

然后
numberOfAccounts
使用它:

numberOfTeams(user) {
    return getUserTeams(user, teams).length;
}
numberOfAccounts(user) {
    return getUserAccounts(user, accounts).length;
}

本质上:使用更多的函数,这样你就可以理解解决你自己问题所采取的步骤,并且在这样做的过程中,更有效地使用这些步骤。

编写一个函数来获得用户所属的团队可能是一个好的开始:

function containsUserId(users, id) {
    return users.some(user => user.userId === id);
}

function getUserTeams(user, teams) {
    return teams.filter(team =>
        containsUserId(team.members, user._id));
}
因为这样您就可以使用它编写
numberOfTeams

numberOfTeams(user) {
    return getUserTeams(user, teams).length;
}
numberOfAccounts(user) {
    return getUserAccounts(user, accounts).length;
}
然后使用类似的函数获取帐户:

function getUserAccounts(user, accounts) {
    const userTeamIds = new Set(
        getUserTeams(user).map(team => team._id)
    );

    return accounts.filter(account =>
        containsUserId(account.authorizedUsers, user._id) ||
        userTeamIds.has(accounts.ownerTeamId));
}

然后
numberOfAccounts
使用它:

numberOfTeams(user) {
    return getUserTeams(user, teams).length;
}
numberOfAccounts(user) {
    return getUserAccounts(user, accounts).length;
}

本质上:使用更多的函数,这样您就可以了解解决您自己问题所采取的步骤,并在这样做时更有效地使用这些步骤。

numberOfAccounts
属性不会出现在问题的
javascript
对象中?什么是
numberOfAccounts
引用,
members
array?
numberOfAccounts
属性没有出现在问题的
javascript
对象中?什么是
numberOfAccounts
引用,
members
数组?