2016-08-04 10 views
-2

私は、プロジェクトの関連でユーザのリストとそのロールのリストを含むAJAX呼び出しから返されるデータセットを持っています。Javascript配列内のアイテムを検索してプッシュ

ユーザーは複数の役割を持つことができるため、さまざまな場所で結果セットに含めることができます。

私は自分の役割と一緒にユーザーを初めて押し込むことができるArray/Objectを作成しようとしています。そして、そのユーザーを再び見ると、その役割を既存の配列に追加するだけです。例えば

、これは遠く離れて、私は確信しているが、その概念..です最後に

var tempRoles = []; 

// Loop over our users. If they are already in the array, just add their additional row. 
$($response.associatedUsers.users.user).each(function(){ 
    tempRoles.push({ 
    QID: this.QID, 
    role: this.Role 
    }) 
}); 

、私はすべての個々のユーザーのリストと、すべての配列を持っている必要があります彼らの持つ役割。

これは、私は、配列がこの唯一のキャッチは私が直接ユーザーを検索し、その役割を見ることができる形式にする必要がある

Users <-- Object? 
    Bob123 <-- User Name 
    Roles <-- Array 
    Admin <-- Role 
    Mod <-- Role 
    Super Mod <-- Role 
    Jimmy456 
    Roles 
    Admin 
    Mod 

のように見えると思うだろうものです。

users['Bob123'].roles 

私は私の例では、その有用ではありません知っているが、うまくいけば、それは私がここで達成しようとしていますかを示しています。

更新: これは、オブジェクトが現在コンソールに表示されているように見えます。ご覧のとおり、複数の異なるロールで同じIDが複数回存在します。

単一のユーザーと、複数の役割を持つことができる必要があります。 enter image description here

この上の正しい書式わからないが、その私は、出力は次のようになり引き受ける方法:配列の上にあなたができるだけのループ

users [ 
Bob123[ 
    roles [ 
    'admin', 'mod', 'superMod' 
    ], 
    Jimmy456[ 
    roles [ 
    'admin', 'mod' 
    ] 
] 
] 
+0

Ajax経由で受信したデータのサンプルデータを提供してから、同じデータを取得する正確なデータ構造を提供してください。 – trincot

+0

'$ response.associatedUsers.users.user'とは何ですか?なぜそれをjQueryオブジェクトにラップしていますか? – Jamiec

+0

複数のユーザーの結果セット – SBB

答えて

1

とQIDをオフにキーオブジェクトを作成します。それらをループするときに、ユーザーが既にマップに存在する場合は、役割を配列にプッシュするだけです。

var users = [ 
    {QID:'user1', ROLE: 'role1'}, 
    {QID:'user1', ROLE: 'role2'}, 
    {QID:'user2', ROLE: 'role1'} 
    ]; 

    var userMap = {}; 
    users.forEach(function(user) { 
    if (!userMap.hasOwnProperty(user.QID)) { 
     userMap[user.QID] = {QID:user.QID, roles:[]}; 
    } 

    userMap[user.QID].roles.push(user.ROLE); 
    }); 

    console.log(userMap); 
+0

最後にこれをテストして、完璧に動作しました。私はあなたの速い応答に感謝します!あなたが他人ができなかったことを喜んで理解しました。 – SBB

関連する問題