几个星期前,我有一个类似的问题,我想与一组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/
所以这大约MANIP问题使用JavaScript对象,而不使用JSON?如果你能提供结果的例子,这将是有帮助的。没有像“JSON对象”那样的东西:http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/。 –
给每个人自己。作为您链接到状态的文章,Crockford使用术语JSON对象。但这是一个很好的观点+1。 – Jason