2

2 つの異なる残りのリソースから返された 2 つのオブジェクトがあります。

{
"id": 1,
"username": "jdoe"
}

{
"role_id": 1,
"role": "developer",
"members": [
    1,
    3,
    5
]
}

単純な ole javascript を使用して、id がメンバー配列にある 1 つに基づいてこれら 2 つのオブジェクトを結合し、最上位ノードとして役割を持つようなオブジェクトを取得し、その下にその役割のユーザーをリストします。

簡単にできましたか?

4

1 に答える 1

5

数週間前に、10 個の AJAX 呼び出しのセットを組み合わせて、同様の問題が発生しました。簡単な方法は、id値からルックアップ テーブルを作成し、ルックアップ テーブルを使用して結果を結合することです。複数のユーザーと複数のロールを使用した例を次に示します。

var users = [
    { "id": 1, "username": "jdoe" },
    { "id": 3, "username": "dbob" },
    { "id": 5, "username": "jske" }
];
var roles = [
    { "role_id": 1, "role": "developer", "members": [1,3,5] },
    { "role_id": 2, "role": "admin", "members": [5] }
];

// create lookup table
for (var i = 0; i < users.length; i++)
    users.lookup[users[i].id] = users[i];

// populate members from users with lookup table
for (var i = 0; i < roles.length; i++)
    for (var j = 0; j < roles[i].members.length; j++)
        roles[i].members[j] = users.lookup[roles[i].members[j]];

ロールのメンバーは、単なる ID ではなく、ユーザーへの参照になりました。

[
  { "role_id": 1, "role": "developer", "members":
    [{ "id": 1, "username": "jdoe" },
     { "id": 3, "username": "dbob" },
     { "id": 5, "username": "jske" }] },
  { "role_id": 2, "role": "admin", "members": 
    [{ "id": 5, "username": "jske" }] }
]

そして、次のような役割でユーザー名を参照できます。

for (var i = 0; i < roles[0].members.length; i++)
    alert(roles[0].members[i].username);

デモ: http://jsfiddle.net/2aqR5/1/

于 2013-02-01T14:01:22.203 に答える