javascript - 如何通过 "foreign key"关系组合json对象

标签 javascript json

我有两个从两个不同的剩余资源返回的对象。

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

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

我想使用普通的 ole javascript 将这两个对象组合成一个 id 位于成员数组中的对象,以便我返回一个像具有 Angular 色作为顶部节点的对象,然后在下面列出该 Angular 色的用户.

容易完成吗?

最佳答案

几周前,我遇到了类似的问题,我想将一组 10 个 AJAX 调用整合在一起。一种简单的方法是根据 id 值创建一个查找表,然后使用该查找表来组合结果。以下是使用多个用户和多个 Angular 色的示例:

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]];

现在, Angular 色中的成员是对用户的引用,而不仅仅是 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" }] }
]

您可以引用 Angular 色中的用户名,如下所示:

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

演示:http://jsfiddle.net/2aqR5/1/

关于javascript - 如何通过 "foreign key"关系组合json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647694/

相关文章:

javascript - 页面加载前 Angular JS 数据加载

javascript - 获取具有特定值的键数的最简单方法

javascript - 如何正确解释外部 SVG 文件以与two.js 一起使用?

javascript - 接收不同数组元素时数组中的相同 JSON 对象

java - 无法解析 intellij 中的符号 jsonobject

javascript - 仅当值为 1 时禁用选择值

javascript - 如何在 JS 中创建采购订单表单

java - NPE 未发生或未被 Servlet 捕获

java - 使用 genson 将 json 字符串反序列化为流体对象

java - 尝试插入 json 数组时出现数据插入错误?