数週間前に、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/