2017-06-02 31 views
0

因此,我有一組與特定團隊綁定的用戶數組,每個用戶都擁有特定的權限。如果用戶綁定到多個團隊,這些團隊的陣列太可供選擇:ReactJS如何遍歷數組並獲取另一個數組內的對象的特定屬性

[ 
{ 
    "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> 
)) 

this.state.team在這種情況下是「123」。

我該如何解決這個問題?

回答

1

team[0]將始終擁有用戶所屬的第一個團隊。你想要的是具有id財產的團隊,其等於this.state.team。因此,不是team[0]嘗試這樣做:

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

當然,這也適用於「成員」和「admin」的可能。

+0

謝謝,這對我的作品! :-) – Steve

0

你應該試試這個

const getTeamData = (data, teamId) => data.map(users => users.teams.filter(team => team.id === teamId)).reduce((acc, current) => acc.concat(current)); 

/** 

[ { 
    id: "123", 
    name: "team-1", 
    permissions: 1 
}, { 
    id: "123", 
    name: "team-1", 
    permissions: 3 
}, { 
    id: "123", 
    name: "team-1", 
    permissions: 3 
}] 
*/ 
相關問題