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
数组?