2017-12-14 12 views
-5

私は2つのオブジェクトのユーザーとグループを持っています。私はユーザーオブジェクトの階層を再注文したい場合は、users.id === groups.useridの場合、すべてのユーザーのレコードを一番上に持って来てください。私はこの使用してES6を達成するにはどうすればよいjavascriptでオブジェクトアイテムを注文する

ユーザー

Users : [{id: 1, name :"Rik"}, {id: 2, name :"Tom"}, {id: 3, name :"Rita"}, {id: 4, name :"Jack"}, {id: 5, name :"Daniel"}, {id: 6, name :"Henry"}, {id: 7, name :"Thomas"}, {id: 8, name :"Shane"}, {id: 9, name :"Jeniffer"}, {id: 10, name :"Jane"}, {id: 11, name :"Alex"} ] 

グループ

groups: [ {userid: 3, groupname :"absent"}, {userid: 7, groupname :"absent"}, {userid: 1, groupname :"present"}, {userid: 11, groupname :"absent"}] 

結果

sortedUsers : [{id: 1, name :"Rik"}, {id: 3, name :"Rita"}, {id: 7, name :"Thomas"}, {id: 11, name :"Alex"}, {id: 2, name :"Tom"}, {id: 4, name :"Jack"}, {id: 5, name :"Daniel"}, {id: 6, name :"Henry"}, {id: 8, name :"Shane"}, {id: 9, name :"Jeniffer"}, {id: 10, name :"Jane"} ] 

/7?そして、どのようにしてsortedUsersアイテムが順番どおりになることを確認できますか?

+3

問題を解決するために作成したコードはありますか? – Andy

+1

ようこそスタックオーバーフロー! [ツアー]をして[ヘルプ]、特に[*良い質問をするにはどうすればいいですか*](/ help/how-to-ask)を読んでください。 )をSOに関する関連トピックに適用し、それを行ってください。 ***もし***あなたが立ち往生して、より多くの研究と検索をした後、元気が出ることができないなら、あなたの試みの[mcve]を投稿し、あなたがどこにいるのかを具体的に言う。人々は喜んで助けてくれるでしょう。がんばろう! –

+0

お試しを表示してください。具体的にはどこにいらっしゃったのですか? –

答えて

0

usersを反復しようとすると、user.idのようなグループがある場合は、sortedUsersにユーザーを追加します。

let users = [ 
 
    {id: 1, name: 'Rik'}, 
 
    {id: 2, name :'Tom'}, 
 
    {id: 3, name :'Rita'}, 
 
    {id: 4, name :'Jack'}, 
 
    {id: 5, name :'Daniel'}, 
 
    {id: 6, name :'Henry'}, 
 
    {id: 7, name :'Thomas'}, 
 
    {id: 8, name :'Shane'}, 
 
    {id: 9, name :'Jeniffer'}, 
 
    {id: 10, name :'Jane'}, 
 
    {id: 11, name :'Alex'} 
 
]; 
 

 
const groups = [ 
 
    {userid: 3, groupname :'absent'}, 
 
    {userid: 7, groupname :'absent'}, 
 
    {userid: 1, groupname :'present'}, 
 
    {userid: 11, groupname :'absent'} 
 
]; 
 

 
let sortedUsers = [] 
 

 
users.forEach(user => { 
 
    if (groups.some(g => g.userid == user.id)) { 
 
    sortedUsers.unshift(user) 
 
    } else { 
 
    sortedUsers.push(user) 
 
    } 
 
}) 
 

 
console.log(sortedUsers)

0

はあなたのユーザーのコレクションをソートするために、減速を使用することができます。

現在のユーザーのIDがいずれかのグループ内にある場合、ユーザーは配列の先頭に挿入されます。そうでなければ、それは単に内部に押し込まれます。

const result = Users.reduce((previous, user) => { 
    if (Groups.find(group => group.userid === user.id)) { 
    previous.unshift(current); 
    } else { 
    previous.push(current); 
    } 

    return previous; 
}, []);