Javascript 如何循环一个数组并获取另一个数组中对象的特定属性

Javascript 如何循环一个数组并获取另一个数组中对象的特定属性,javascript,reactjs,Javascript,Reactjs,因此,我有一组用户,这些用户与特定的团队联系在一起,每个用户都有特定的权限。如果用户绑定到多个团队,那么阵列中也可以使用所有这些团队: [ { "name" : "user1", "teams": [ {"id": "123", "name": "team-1", "permissions" : 1} ] }, { "name" : "user2", "teams": [ {"id": "123", "name": "tea

因此,我有一组用户,这些用户与特定的团队联系在一起,每个用户都有特定的权限。如果用户绑定到多个团队,那么阵列中也可以使用所有这些团队:

[
{
    "name" : "user1",
    "teams": [
        {"id": "123", "name": "team-1", "permissions" : 1}
    ]
},
{
    "name" : "user2",
    "teams": [
        {"id": "123", "name": "team-1", "permissions" : 3}
    ]
},
{
    "name" : "user3",
    "teams": [
        {"id": "456", "name": "team-2", "permissions" : 3},
        {"id": "789", "name": "team-3", "permissions" : 3},
        {"id": "123", "name": "team-1", "permissions" : 3},
        {"id": "233", "name": "team-4", "permissions" : 3}

    ]
}

]
所以现在我想要这个:

我得到了我正在查看的当前团队的ID(ID:123),如何映射数组,以便只显示ID:123的团队的权限

我做了以下操作,但这不起作用,因为User3的第一项是错误的团队

 const MembersTable = observer(({ state }) => (
   <div>
     <table className="table table-hover table-responsive">
      <thead>
       <tr>
         <th>Name</th>
         <th>Email</th>
         <th>Permissions</th>
       </tr>
     </thead>
     <tbody>
      {state.accounts.map((account, i) => <MembersTableData state={state} account={account} team={account.teams} key={i}/>)}
     </tbody>
    </table>
 </div>
))

const MembersTableData = observer(({ state, account, organization }) => (
  <tr>
    <td>
      <span>{account.fullName}</span>
   </td>
    <td>{account.email}</td>
    <td>
     {team[0].permissions == 1 && <span>member</span>}
     {team[0].permissions == 2 && <span>administrator</span>}
     {team[0].permissions == 3 && <span>super admin</span>}
    </td>
  </tr>
 ))
constmemberstable=观察者({state})=>(
名称
电子邮件
权限
{state.accounts.map((account,i)=>)}
))
const MembersTableData=观察者({state,account,organization})=>(
{account.fullName}
{account.email}
{team[0]。权限==1&&member}
{团队[0]。权限==2&&administrator}
{团队[0]。权限==3&&super admin}
))
this.state.team
在本例中为“123”


如何解决此问题?

团队[0]将始终拥有用户所属的第一个团队。您需要的是具有
id
属性的团队,该属性等于
this.state.team
。因此,请尝试执行以下操作,而不是
团队[0]

{team.find(t=>t.id==this.state.team.permissions==3&&super admin}

当然,这也适用于“成员”和“管理员”。

您应该试试这个

const getTeamData=(data,teamId)=>data.map(users=>users.teams.filter(team=>team.id==teamId)).reduce((acc,current)=>acc.concat(current));
/**
[ {
身份证号码:“123”,
名称:“1队”,
权限:1
}, {
身份证号码:“123”,
名称:“1队”,
权限:3
}, {
身份证号码:“123”,
名称:“1队”,
权限:3
}]
*/